PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [MySQL] Komplexer Selectbefehl


Talanos
2008-01-12, 10:53:34
Hey,

ich habe drei Tabellen: buch, autor und autoren_zuweisung

Die haben folgende Felder:
buch:
id, titel, genre

autor:
id, name

autoren_zuweisung:
autorid, buchid

soweit mein Grundansatz.
Nun möchte ich alle Bücher ausgeben mit entsprechendem Autor. Das Problem, was sich dabei ergibt, ist, dass ein Buch auch von mehreren Autoren geschrieben sein kann. Auf der Webseite soll das Ergebnis in einer Tabelle angezeigt werden, wobei die Autoren dann mit Kommata getrennt in einer Zelle stehen sollen. Wie lässt sich das gut lösen?

Talanos
2008-01-13, 18:05:43
hat keiner eine Idee? Oder ist evtl. schon der Grundansatz falsch gedacht?

Marscel
2008-01-13, 23:28:15
Bin gerade ziemlich dichrt, aber ich versuchs mal.

Soll alles in genau einen SELECT-Befehl unterkommen? Wenn ja, alles an einander joinen. Zum Beispiel

SELECT a.*, c.* FROM buch a LEFT JOIN autoren_zuweisung b ON (b.buchid = a.id) LEFT JOIN autor c ON(b.autorid = c.id) WHERE b.autorid = [Autorennummer].

Wenn ich jetzt nichts vergessen habe, steht in jeder Zeile sowohl das Buch als auch jeweils ein Autor, wenn es mehrere gibt, tauch das Buch auch mehrmals auf. Das ist an sich unschön, aber machbar, besser wäre erst alle Bücher vom einem Autor zu suchen und dann zu gucken, ob es noch andere gibt.

Dass du es dann auf der Website in in einer Tabelle angeeigt bekommst, dafür musst du dann mittels der benutzten Sprache handeln, also in PHP z.B. für jeden Datensatz gucken, welches Buch ist gemeint und dafür dann jeweils die Autoren sammeln.

Sorry, wenn s unverständlich klingt, gucke morgen anochmal.