PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySql Abfrage über 3 Tabellen


eNto
2010-03-17, 22:39:24
Hallo, ich hab schon wieder ein Anliegen :p

Folgende Tabellen:


Tabelle Message
ID-----Content
1 Das ist ein Text...
2 Auch ein Text
3 Nachricht nr 32423



Tabelle Link
ID---Message_ID---------------------Url
1 3 hxx:// www.heise.de
2 3 hxx://www.google.de
3 3 hxx://www.scheße.de
4 4 hxx://www.facebook.de
5 5 hxx://www.bing.de
6 5 hxx://www.asdasd.de
7 6 hxx://www.h234234.de



Tabelle Video
ID---Message_ID--------------------------------url_video
1 2 http://www.youtube.com/watch?v=jBU93V2x44E
2 2 http://www.youtube.com/watch?v=jBU93V2x44E
3 3 http://www.youtube.com/watch?v=jBU93V2x44E
4 3 http://www.youtube.com/watch?v=jBU93V2x44E
5 3 http://www.youtube.com/watch?v=jBU93V2x44E
6 4 http://www.youtube.com/watch?v=jBU93V2x44E
7 6 http://www.youtube.com/watch?v=jBU93V2x44E


Wie ist es möglich per Select, alle Daten aus den anderen beiden Tabellen zu der jeweiligen ID der ersten Tabelle zu bekommen ?

als Beispiel erste Tabelle mit ID 3 nun will ich alle Zeilen der anderen Tabelle auslesen die ebenfalls diese in diesem Beispiel orange gefärbte message_id 3 haben.

Nur brauch ich das halt allgemein, so ich am Ende wenn möglich einen mehrdimensionalen Array habe in dem die Ergebnisse gespeichert werden.

Ich habs schon mit 2 Lefts Joins auf die jeweiligen Tabellen probiert, aber irgendwie war das Ergbniss nicht das was ich wollte.

Hat jemand eine Idee? Ist das überhaupt mit 1ner Anfrage möglich? Aber ich denke schon nur weiß ich halt nicht wie.

Gast
2010-03-17, 22:59:44
"join" ist schon genau der richtige ansatz, evtl noch in kombination mit "distinct" und dingen wie "group" und "group_concat".

eNto
2010-03-17, 23:51:41
"join" ist schon genau der richtige ansatz, evtl noch in kombination mit "distinct" und dingen wie "group" und "group_concat".


'SELECT
message.id,
message.date,
message.content,
link.url,
video.url,
FROM
message

LEFT JOIN
video
ON
message.id = video.message_id

LEFT JOIN
link
ON
message.id = link.message_id


ORDER by message.date DESC


So hab ichs bisher, wenn ich jetz das Ganze noch mit GROUP BY erweiter, dann bekomm ich nur jeweils 1 Zeile von der Tabelle Video und 1 Zeile aus der Tabelle Link, ich bräuchte aber alle.

Group_concat ist mir neu, werd mich mal darüber informieren aber erst morgen dann ^^

DanMan
2010-03-17, 23:54:41
SELECT content, url, url_video FROM message, link, video
WHERE message.id=3 AND link.message_id=3 AND video.message_id=3

So ungefähr. Ist schlechter Stil, weil ich die Verknüpfung mit WHERE gelöst habe, aber bei einer solch einfachen Abfrage kann man das schon mal machen. Kann auch sein, dass man die Werte noch in Anführungszeichen setzen muss.

eNto
2010-03-18, 16:30:57
ok thx euch hab es umsetzten können.