(MySQL) Natural Join - Problem
Skystalker 05.01.2004 - 18:39 961 5
Skystalker
Bloody Newbie
|
hi,
ich will eine liste von files ausgeben, mit den dazugehörigen autoren, der kategorie und dem status
hier mal meine Tabels:
dldb_authors -------------- AID | aname
dldb_categories ---------------- CID | cname
dldb_states ------------- SID | sname
dldb_files ------------------------------------ ID | fname | date | AID | SID | CID
ich hab mir alles so hergerichtet das ich mit einem NATURAL JOIN das auf einmal auslesen kann
mein Query:
SELECT ID, fname, UNIX_TIMESTAMP(date) AS date, aname, sname FROM dldb_files NATURAL JOIN dldb_authors, dldb_states WHERE CID = $id ORDER BY fname
er gibt mir sogar das richtige aus nur leider doppelt, weil ich 2 stadien gespeichert habe, wenn ich dldb_states mit dldb_authors vertausche gibt ers mir 3fach aus weil ich 3 autoren habe auch noch zu sagen ist, wenn ich den teil nach dem JOIN also "WHERE CID = $id ORDER BY fname" weglasse funktioniert alles, aber so kann ich es nicht gebrauchen
ich verwende MySQL 4.0.12 und PHP 4.3.2-RC1
ich hoffe mir kann wer helfen, ich nehm auch ganz andere lösungen in kauf
Bearbeitet von Skystalker am 11.01.2004, 02:45
|
Ringding
Pilot
|
Das ist mir suspekt. Ich würd jedenfalls einfach inner join verwenden und händisch angeben, worüber gejoined werden soll.
|
atrox
in fairy dust... I trust!
|
das ist bei joins nun mal so: wenn ich zu einem haupt-datensatz mehrere detail-datensätze habe, dann wird der hauptdatensatz so oft wiederholt, wie es detail-datensätze gibt. bestimmte idente doppelte ausgaben kann man jedoch mit dem keyword "distinct" verhindern (genaueres bitte nachlesen, um die uhrzeit würde meine erklärung wohl zu abstrus klingen)
was für eine ausgabe hättest du denn erwartet ?
|
Ringding
Pilot
|
Aber was mir dabei komisch vorkommt, ist, dass die Reihenfolge der Tables die Anzahl der Ergebnissätze ändert.
|
watchout
Legendundead
|
sag mal, wozu hast du eigentlich "categories"? ich tät dir auf jeden fall auch ein inner-join empfehlen mit using() is das ja dann auch net so viel arbeit
|
Skystalker
Bloody Newbie
|
danke mal für die antworten, ich werds wenn es sich heut noch ausgeht, ausprobieren
in categories stehen die kategorien wie zb.: Spiele, Filme, Musik, usw... man kann immerwieder neue erstellen
ganauso wie autoren, stadien (fertig, in arbeit) und eben files
und den query brauch ich da oben, wenn zum beispiel jemand die kategorie film auswählt, alle filme anzuzeigen, oder zb.: den autor xy nur die files von ihm
|