Für das Projekt eines Schülers standen wir heute vor dem Problem, Daten aus der Mysql-Datenbank auslesen zu wollen, die über eine Realtionstabelle verknüpft waren. Konkret war das ERM so:
Nun wollten wir alle Artikel einer Liste eines Users auslesen. Also alle Artikel, die in der Realtionstabelle zu einer festgelegten Listenid genannt werden. Übereinstimmen muss als die Listenid (in unserem Beispiel die Liste mit der id 1) und die Artikelid (in der Relationstabelle und in der Artikeltabelle).
Es gibt zwei Arten, dies zu realisieren. Die übliche Art wäre der Befehl „join“:
SELECT artikel.name, artikel. preis FROM artikel LEFT JOIN rel ON rel.ida=artikel.ida WHERE rel.idl=1
Heute abend habe ich gelernt, das es aber auch nur mit den Befehlen SELECT, FROM und WHERE ginge, wenn man logische Verknüpfungen nutzt:
SELECT artikel.name, artikel.preis FROM artikel, liste, relationstabelle WHERE liste.ID_l=1 AND relationstabelle.ID_a=artikel.ID_a
Das geht sogar auch denn, wenn man noch mehr Bedingungen und Tabellen hinzufügt – ergänzt man zum Beispiel die Tabelle Benutzer und listet die Bedingungen „WHERE liste.ID_b=1 AND liste.ID_l=relationstabelle.ID_l AND relationstabelle.ID_a=artikel.ID_a",
so bekommt man alle Artikel eines Users – sie werden doppelt gelistet, wenn sie auf verschiedenen Listen doppelt stehen.