Oui. Le where
clause transforme la jointure externe gauche en jointure interne.
Pourquoi? La valeur de pe.pqid
est NULL
(comme pe.uid
) lorsqu'il n'y a pas de correspondance. Donc la comparaison dans le where
la clause échoue (presque toutes les comparaisons avec NULL
renvoie NULL
qui est considéré comme faux).
La solution est de déplacer la comparaison vers le on
clause :
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