3 votes

Comment obtenir des données à partir d'une sous-requête où l'identifiant n'existe pas ?

J'ai une requête sql qui récupère les résultats d'une table mais j'ai besoin qu'elle n'affiche les résultats que si les identifiants ne sont pas dans une autre table.

Exemple

$sql = "SELECT id FROM TABLE_1 WHERE id NOT IN(SELECT more_id FROM TABLE_2)

L'idée est que si l'identifiant n'existe pas dans la liste "more_id", le résultat doit être affiché.

Cela ne semble pas fonctionner, toute aide serait grandement appréciée. Je dois préciser que "more_id" est le même "id" mais dans une autre table qui stocke d'autres enregistrements.

4voto

Ali Points 56

Cela devrait fonctionner :

$sql = "SELECT TABLE_1.id
            FROM TABLE_1
            LEFT JOIN TABLE_2
                ON TABLE_1.id = TABLE_2.more_id
            WHERE TABLE_2.more_id IS NULL"

Sans la clause WHERE, vous obtiendrez une liste de tous les éléments de TABLE_1, y compris ceux qui ont des correspondances dans TABLE_2 et ceux qui n'en ont pas. L'ajout de la clause WHERE permet de filtrer les correspondances.

0voto

J-16 SDiZ Points 14191

Je pense qu'une table utilise VARCHAR comme identifiant, l'autre table utilise INTEGER , CHAR ou d'autres types incomparables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X