HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - Frage zu einer JOIN Verschachtelung :-)

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Frage zu einer JOIN Verschachtelung :-)

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   MySQL
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
Marina-Sauer



Anmeldungsdatum: 21.01.2007
Beiträge: 2

BeitragVerfasst am: 21.01.2007 04:26:53    Titel: Frage zu einer JOIN Verschachtelung :-) Antworten mit Zitat

huhu^^
ich stehe grad vor nem Problem, ich bastel momentan in PHP an einem internen Nachrichtensystem für eine Webseite und bisher klappt es auch ganz gut.

Ich habe für das Nachrichtensystem 5 Tabellen:

* nachricht
ID_Nachricht|ID_Nachrichtentext|ID_Benutzer|ID_Verzeichnis|Gelesen

* nachrichtentext
ID_Nachrichtentext|VON_ID_Benutzer|VON_Benutzer|Titel|Nachricht|Datum

* nachrichten_verzeichnis
ID_Verzeichnis|ID_Nachricht

* nachricht_nachrichtentext
ID_Nachricht|ID_Nachrichtentext

* verzeichnis
ID_Verzeichnis|Name

Das ganze funktioniert nach der dritten Normalform.

Folgende Querys funktionieren einwandfrei um jeweils den Nachrichtentext zur Nachricht, und das Verzeichnis für die Nachricht zuzuordnen.

a.* .. habe ich erstmal nur zum testen drinnen, später werden explizit die spalten angegeben deren datensätze ich benötige.
Code:
SELECT a.*,b.*
FROM nachricht as a, nachrichtentext as b
LEFT JOIN nachricht_nachrichtentext as c
ON (c.id_nachrichtentext=b.id_nachrichtentext)
WHERE a.id_nachricht=c.id_nachricht

SELECT a.*,b.*
FROM nachricht as a, verzeichnis as b
LEFT JOIN nachrichten_verzeichnis as c
ON (c.id_verzeichnis=b.id_verzeichnis)
WHERE a.id_nachricht=c.id_nachricht


Nun würde ich aber gerne direkt bei der Abfrage der Nachricht die sich den Nachrichtentext holt, auch zusätzlich noch den Verzeichnisnamen holen der wiederum in der anderen Tabelle vorhanden ist.

Bin leicht übermüdet, und falls ich etwas zu waage beschrieben habe und ihr mir helfen möchtet, bitte einfach nochmal mehr infos anfordern ^^


LG
Marina
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 21.01.2007 11:36:04    Titel: Antworten mit Zitat

wo liegt das problem? du kannst doch so oft join'en wie du willst:


SELECT a.*,b.*
FROM nachricht as a, nachrichtentext as b
LEFT JOIN nachricht_nachrichtentext as c
ON (c.id_nachrichtentext=b.id_nachrichtentext)
LEFT JOIN nachrichten_verzeichnis as d
ON (d.id_verzeichnis=b.id_verzeichnis)
WHERE a.id_nachricht=c.id_nachricht

oder besser gesagt, sofern du mehrere tabellen hast verwendest du diese halt alle nacheinander:

SELECT * FROM a
LEFT JOIN b ON a.id = b.id
LEFT JOIN c ON a.id = c.id
LEFT JOIN d ON c.id = d.id
WHERE
b.id IS NOT NULL AND
c.id IS NOT NULL AND
d.id IS NOT NULL AND
a.kriterium = 1312334
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Marina-Sauer



Anmeldungsdatum: 21.01.2007
Beiträge: 2

BeitragVerfasst am: 21.01.2007 12:27:35    Titel: Antworten mit Zitat

admin hat folgendes geschrieben:
wo liegt das problem? du kannst doch so oft join'en wie du willst


Weil das bei mir irgendwie nicht funktionieren will. Genauso wie dein erstes Beispiel hatte ich es auch versucht gehabt, bekomme aber immer den Fehler:
Unknown column 'a.id_verzeichnis' in 'on clause'
hierbei:
Code:
SELECT a.*,b.*,c.*,d.*
FROM nachricht as a, nachrichtentext as b
LEFT JOIN nachricht_nachrichtentext as c
ON (c.id_nachrichtentext=b.id_nachrichtentext)
LEFT JOIN nachrichten_verzeichnis as d
ON (d.id_verzeichnis=a.id_verzeichnis)
WHERE a.id_nachricht=c.id_nachricht


Was irgendwie nicht sein kann, da a.* ja die Daten von nachricht beinhaltet, und diese ja sehr wohl eine spalte id_verzeichnis hat.

müsste ich nicht eigentlich nach dem ersten Join eine weitere SELECT Abfrage samt Join einbauen ?
Sorry falls ich so blöd frage, aber diese Art da querys nehme ich gerade erst in der Berufsschule durch und kannte sie vorher zwar, habe sie aber irgendwie nie angewandt :-/

LG
Marina[/b]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   MySQL
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.