problem left join

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
klunzen
Mitglied
Beiträge: 341
Registriert: 01.07.2004 01:29

problem left join

Beitrag von klunzen »

hab ein kleines newssystem am laufen und nutze eine mysql datenbank.. in der 2 tabellen werkeln...

in der einen tabelle stehen die allgemeinen daten: id, datum, titel, text und autor... wobei der autor eine zahl zahl enthält die auf die andere tabelle verweist... in der anderen tabelle stehen die daten des autors...

wenn ich jetzt alle daten mittels "select * from table1" ausgebe, so steht bei autor eine zahl... es soll da aber der name aus der anderen tabelle ausgegeben werden...

über einen left join müßte doch möglich sein den name anstatt der zehl anzuzeigen...

bitte um hilfe
Clone
Mitglied
Beiträge: 217
Registriert: 10.01.2004 18:41
Wohnort: Berlin
Kontaktdaten:

Beitrag von Clone »

Code: Alles auswählen

SELECT *
FROM autoren
LEFT JOIN news ON news.autor = autoren.id
Die Bezeichnungen musst du noch anpassen, dann müsste es gehen und du kannst über die Bezeichnung der Spalte in der Autoren-Tabelle, in der der Name steht, auf den Namen zugreifen.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

KB:knigge
Clone
Mitglied
Beiträge: 217
Registriert: 10.01.2004 18:41
Wohnort: Berlin
Kontaktdaten:

Beitrag von Clone »

Ja, ich weiß, aber das bekommt er sicher noch selbst hin.
klunzen
Mitglied
Beiträge: 341
Registriert: 01.07.2004 01:29

Beitrag von klunzen »

danke schonmal...
aber irgendwas passt bei mir nicht, dass liegt daran dass ich mich gestern schlecht ausgedrückt habe :oops:

nochmal paar sachen... tabelle1 = news ... tabelle2 = redakteure

in tabelle1 gibt es u.a. das feld autor wo die zahlen drin stehen 1,2,...
in tabelle2 gibt es u.a. das feld id und username.
tab1.autor ist also mit tab2.id verbunden.
dann gibt es in tab2 noch den username. diesen möchte ich mit den left join rausbekommen.

hoffe ich hab mich nun besser ausgedrückt.

mit folgendem befehl geht es nicht:

Code: Alles auswählen

SELECT *
FROM news 
LEFT JOIN redakteure ON redakteure.id = news.autor
getestet mit:

Code: Alles auswählen

while ($row = mysql_fetch_assoc($result)) {
    echo "<br>";
    foreach ($row as $key => $value) {
	    echo $key.".".$value. "  ";
	}
}
die;
(liefert ja alle werte die der sql-befehl abgibt)
Clone
Mitglied
Beiträge: 217
Registriert: 10.01.2004 18:41
Wohnort: Berlin
Kontaktdaten:

Beitrag von Clone »

Gibt es denn eine Fehlermeldung?
mristau2k5
Mitglied
Beiträge: 140
Registriert: 10.05.2005 02:35
Wohnort: Filderstadt

Beitrag von mristau2k5 »

Code: Alles auswählen

$sql = "SELECT r.*, n.* FROM (news AS n LEFT JOIN redakteure AS r ON r.id=n.autor)";
versuchs mal mit diesem Query
klunzen
Mitglied
Beiträge: 341
Registriert: 01.07.2004 01:29

Beitrag von klunzen »

Clone hat geschrieben:Gibt es denn eine Fehlermeldung?
:oops: da ich nich viel mit sql eigentlich zu tun habe ist mir n kleiner aber feiner fehler unterlaufen...

es gibt felder die in beiden tabellen vorhanden sind... also muss ich tab1.feld schreiben und nicht nur feld... :roll:

jetze läufts einwandfrei... thx
Antworten

Zurück zu „Coding & Technik“