Quelle est la meilleure façon d'utiliser LEFT OUTER JOIN pour vérifier l'inexistence de lignes associées

De L'Utilisation De MySQL 5.x je veux efficacement sélectionnez toutes les lignes de la table X, où il est aucune ligne dans la table Y satisfaisant à certaines conditions, par exemple

Me donner tous les enregistrements de X où connexes, Y avec les foo = bar n'existe PAS

SELECT count(id) FROM X
LEFT OUTER JOIN Y ON y.X_id = X.id AND y.foo = 'bar'
WHERE y....?

Ce que je comprends, une jointure externe gauche est garanti pour produire une ligne pour chaque ligne de la gauche (le premier) table -- X dans ce cas, si oui ou non une bonne ligne dans la table jointe a été trouvé. Ce que je veux faire est alors de sélectionner uniquement les lignes où aucune ligne n'a été trouvé.

Il me semble que y'.X_id doit être NULL si il n'y a pas d'enregistrement correspondant, mais ce test ne semble pas fonctionner. Ni y.X_id = 0 ou !y.X_id.

Modifications: correction de l'erreur de transcription (pas QUE) qui a été souligné par plusieurs réponses. Fixe l'erreur grammaticale.

source d'informationauteur podperson | 2011-05-04