mkuhnert: mySQL: mehrere INNER JOINs

Beitrag lesen

Hallo,

ich bastele mir gerade eine simple DVD Datenbank.
Diese besteht aus 4 Tabellen, die wie folgt aufgebaut sind:

Quellcode:

Tabelle "dvd"
id        int(11)
datum       timestamp
name        varchar(80)
beschr        text
genre        int(3)
dar1           int(3)
dar2           int(3)
dar3           int(3)
regie       int(11)
laufzeit    int(3)
fsk        int(2)
bew        int(1)
jahr        int(4)
verl        int(1)

Tabelle "genre"
id        int(11)
art           varchar(60)

Tabelle "darsteller"
id        int(11)
vorname       varchar(60)
nachname       varchar(60)

Tabelle "regie"
id        int(11)
vorname       varchar(60)
nachname       varchar(60)

Die Tabellen sind via Recordsets miteinander verbunden. D. h., im Eingabeformular der Tabelle "dvd"
kann per Listenfeld die Darsteller, der Regisseur und das Genre ausgewählt werden.

Nun möchte ich per SELECT und JOIN alle DVDs ausgeben, in der Art:

ID, Name, Beschr, genre, dar1, dar2, dar3, regie, ...

Dabei soll "genre, dar1, dar2, dar3 und regie" nicht die ID anzeigen, sondern den "korrekten" Wert,
also z. B. "Tom Cruise" als Darsteller und nicht "23" als ID .

Folgende SELECT-Anweisung habe ich gebastelt, welche nicht funktioniert:

Quellcode:

$query = "SELECT dvd.*, genre.art AS j_genre, darsteller.name AS j_darsteller, regie.name AS j_regie FROM dvd
         INNER JOIN genre ON dvd.genre=genre.id
         INNER JOIN darsteller ON dvd.dar1=darsteller.id
         INNER JOIN darsteller ON dvd.dar2=darsteller.id
         INNER JOIN darsteller ON dvd.dar3=darsteller.id
         INNER JOIN regie ON dvd.regie=regie.id";

Die Daten gebe ich dann prinzipiell so aus:

Quellcode:

echo $arr[name],$arr[j_genre],$arr[j_darsteller],$arr[j_regie]...

Zum einen glaube ich, dass INNER JOIN hier falsch ist (LEFT stattdessen?) und natürlich die Zuordnung von dar1,
dar2 und dar3 fehlt (hier wird ja nur miT AS ein darsteller zugeordnet). Aber wie bekomme ich das in der
SELECT-Anweisung hin...?

Weitere Info zur Relation: jede DVD hat mindestens einen Darsteller, max. drei Darsteller.

Ich hoffe ich war nicht zu ausführlich.
Bin über jeden Tipp sehr dankbar!

Gruss, Marc