Hallo,
innerhalb meiner PHP-Seite möchte ich gleichzeitig Daten aus zwei Tabellen holen, die miteinander verknüpft sind.
Folgende Tabellenstruktur:
user:
id | name | gruppe
testergebnisse
id | testid | userid | ergebnis
Das Problem dabei: Es sollen alle Datensätze der Tabelle "user" ausgegeben werden, die einen über userid verknüpften oder keinen Datensatz in "testergebnisse" mit einer bestimmten testid haben.
Mein Query:
Getestet habe ich es mit EasyPHP (MySQL 4.1.9), wobei alles so funktioniert wie gedacht: Es werden auch die Datensätze angezeigt, die einen Eintrag in "testergebnisse.testid"!="123" haben (mit NULL als Wert in den jeweiligen Feldern).
Auf dem Server (MySQL 3.22.25) werden mir aber jene Datensätze aus "user" nicht mehr angezeigt, zu denen es einen Datensatz mit "testid"!="123" in "testergebnisse" gibt.
Wenn man es sich überlegt, ist das ja auch logisch, nur warum funktioniert's mit der neueren Version? Kann das an der "Left-Join-Optimierung" von MySQL liegen? Und kann man es mit einer alten Version von MySQL irgendwie anders schreiben?
Ceppi
innerhalb meiner PHP-Seite möchte ich gleichzeitig Daten aus zwei Tabellen holen, die miteinander verknüpft sind.
Folgende Tabellenstruktur:
user:
id | name | gruppe
testergebnisse
id | testid | userid | ergebnis
Das Problem dabei: Es sollen alle Datensätze der Tabelle "user" ausgegeben werden, die einen über userid verknüpften oder keinen Datensatz in "testergebnisse" mit einer bestimmten testid haben.
Mein Query:
Code:
SELECT
user.name,testergebnisse.ergebnis
FROM
user
LEFT JOIN
testergebnisse
ON
user.id=testergebnisse.userid
WHERE
user.gruppe IN('abc','xy') AND (testergebnisse.testid='123' OR ISNULL(testergebnisse.testid))
Auf dem Server (MySQL 3.22.25) werden mir aber jene Datensätze aus "user" nicht mehr angezeigt, zu denen es einen Datensatz mit "testid"!="123" in "testergebnisse" gibt.
Wenn man es sich überlegt, ist das ja auch logisch, nur warum funktioniert's mit der neueren Version? Kann das an der "Left-Join-Optimierung" von MySQL liegen? Und kann man es mit einer alten Version von MySQL irgendwie anders schreiben?
Ceppi