Ja. Das where
-Klausel verwandelt den linken äußeren Join in einen inneren Join.
Wieso den? Der Wert von pe.pqid
ist NULL
(ebenso wie pe.uid
) wenn es keine Übereinstimmung gibt. Also der Vergleich im where
-Klausel schlägt fehl (fast alle Vergleiche mit NULL
gibt NULL
zurück was als falsch angesehen wird).
Die Lösung besteht darin, den Vergleich nach on
zu verschieben Klausel:
SELECT pq.id, pq.data, pe.data
FROM pq LEFT OUTER JOIN
pe
ON pq.id = pe.pqid and
pe.uid='12345'
ORDER BY pq.id LIMIT 2