Hallo zusammen
Ich habe eine Tabelle MEDIA und eine Tabelle AUTHOR. Ein Buch (also ein Eintrag in die MEDIA Tabelle) kann keinen, einen oder mehrere Autoren haben und mehrere Medien können denselben (oder dieselben) Autor(en) haben. Die Beziehung der beiden Tabellen ist über die Tabelle MEDIA_AUTHOR gelöst.
Die Tabellen verfügen (abgespeckt) über folgende Felder
Tabelle Media: MEDIA_ID, MEDIA_NAME
Tabelle Author: AUTHOR_ID, AUTHOR_NAME
Tabelle Media_Author: MEDIA_ID, AUTHOR_ID
Jetzt möchte zum Beispiel ich folgende Darstellung erreichen:
- Medium1, Autor1, Autor2, Autor3
- Medium2, Autor3
- Medium3, Autor1, Autor3
- Medium4
Ich benutze dazu folgendes SELECT Statement:
Ich kriege damit aber das Resultat
- Medium1, Autor1
- Medium1, Autor2
- Medium1, Autor3
- Medium2, Autor3
- Medium3, Autor1
- Medium3, Autor3
- Medium4, NULL
Wieso das so ist, ist mir klar, ich erwarte von dem Statement auch kein anderes Resultat. Ich habe allerdings keine Ahnung wie ich das oben dargestellte Resultat erreichen kann. Natürlich könnte ich in meinem Programm für jedes Medium die Autoren in einem separaten Statement abfragen, was ich aber aus Performancegründen nicht möchte.
Kann mir jemand dabei helfen ein Statement zu finden, das mir pro Resultat des einen Statements (alle Medien) für jede Resultatzeile (jedes gefundene Medium) alle über einen Fremdschlüssel verknüpfte Resultate eines zweiten Statements (alle Autoren) zurückgibt? Kurz: Eine Liste aller Medien und für jedes Medium eine Liste aller Autoren.
Herzlichen Dank fürs Lesen und mithelfen!
Gruss
soma
Ich habe eine Tabelle MEDIA und eine Tabelle AUTHOR. Ein Buch (also ein Eintrag in die MEDIA Tabelle) kann keinen, einen oder mehrere Autoren haben und mehrere Medien können denselben (oder dieselben) Autor(en) haben. Die Beziehung der beiden Tabellen ist über die Tabelle MEDIA_AUTHOR gelöst.
Die Tabellen verfügen (abgespeckt) über folgende Felder
Tabelle Media: MEDIA_ID, MEDIA_NAME
Tabelle Author: AUTHOR_ID, AUTHOR_NAME
Tabelle Media_Author: MEDIA_ID, AUTHOR_ID
Jetzt möchte zum Beispiel ich folgende Darstellung erreichen:
- Medium1, Autor1, Autor2, Autor3
- Medium2, Autor3
- Medium3, Autor1, Autor3
- Medium4
Ich benutze dazu folgendes SELECT Statement:
SQL:
SELECT * FROM media m LEFT JOIN (author a, media_author ma) ON (a.author_id=ma.author_id AND m.media_id = ma.media_id )
Ich kriege damit aber das Resultat
- Medium1, Autor1
- Medium1, Autor2
- Medium1, Autor3
- Medium2, Autor3
- Medium3, Autor1
- Medium3, Autor3
- Medium4, NULL
Wieso das so ist, ist mir klar, ich erwarte von dem Statement auch kein anderes Resultat. Ich habe allerdings keine Ahnung wie ich das oben dargestellte Resultat erreichen kann. Natürlich könnte ich in meinem Programm für jedes Medium die Autoren in einem separaten Statement abfragen, was ich aber aus Performancegründen nicht möchte.
Kann mir jemand dabei helfen ein Statement zu finden, das mir pro Resultat des einen Statements (alle Medien) für jede Resultatzeile (jedes gefundene Medium) alle über einen Fremdschlüssel verknüpfte Resultate eines zweiten Statements (alle Autoren) zurückgibt? Kurz: Eine Liste aller Medien und für jedes Medium eine Liste aller Autoren.
Herzlichen Dank fürs Lesen und mithelfen!
Gruss
soma
Zuletzt bearbeitet von einem Moderator: