Bonjour,
Je souhaites en une requête **fournir une liste de id** et **obtenir la liste des id** qui n'existe pas.
La requête suivante ne fonctionne qu'avec un seul id (ici 999999), comment la transformer pour qu'elle puissent fonctionner avec plus d'un id ?
select a.id
from (select 999999 AS id) AS a
LEFT JOIN test AS b ON (b.id = a.id)
WHERE b.id IS NULL
Merci énormément !
# contradicatoire
Posté par NeoX . Évalué à 2.
et avoir la liste des ID qui n'existent pas
ce sont d'apres moi 2 requetes contradictoires
soit tes IDs parmi un intervalle de 1 à 10 (pour exemple)
la liste des IDs qui existent va te renvoyer 1|2|3|5|8|9
la liste des IDs qui n'existent pas, c'est l'inverse de la requete precedente
et ca te renvoie 4|6|7|10
la jointure des deux te renvoie forcement ton intervalle de 1 à 10
ou alors le probleme n'est pas correctement formulé
[^] # Re: contradicatoire
Posté par killnn . Évalué à 1.
Merci de ton commentaire.
Cependant je ne sais pas comment arriver à "ca te renvoie 4|6|7|10".
Je reformule ma question suivant ta remarque :
La partie "(select 999999 AS id)" doit être construite avec une liste de id provenant d'une entrée.
Ma première idée était "(select IN(456, 999999, 123) AS id)" mais cela ne fonctionne pas (erreur de syntaxe).
Quel syntaxe utilisé pour arriver à "(select IN(456, 999999, 123) AS id)" ?
Merci.
[^] # Re: contradicatoire
Posté par Obsidian . Évalué à 1.
# Jointure ouverte ?
Posté par Obsidian . Évalué à 2.
Si, par contre, tu veux sélectionner un ensemble d'ID depuis une table donnée et ne retenir que celles qui n'apparaissent pas dans une seconde table, il faut passer par une jointure ouverte.
SELECT a.id
FROM PremiereTable a
LEFT OUTER JOIN SecondeTable b
ON b.id = a.id
WHERE b.id IS NULL
[^] # Re: Jointure ouverte ?
Posté par kna . Évalué à 1.
Remarque, on pourrait faire sans :
SELECT id
FROM table_contenant_toutes_les_ids
WHERE id NOT IN ( SELECT id FROM table_des_ids_réservés )
Comment ça c'est moche ?
[^] # Re: Jointure ouverte ?
Posté par gaaaaaAab . Évalué à 1.
SELECT t1.id
FROM table_contenant_toutes_les_ids t1
WHERE NOT EXISTS (SELECT 1 FROM table_des_ids_réservés t2 WHERE t1.id = t2.id)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.