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