Requette select where in et not in
MoZ
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je cherche à effectuer une requette sur des éléments avec la clause where incluant des données d'un tableau et en excluant des données d'un tableau.
Ca ressemble a ca :
en gros ce que je cherche à faire c'est que le "not in" exclue la valeur meme s'il se trouve inclue dans la 1ere ...
Est ce que je m'y prend bien ?
Merci de votre aide.
Je cherche à effectuer une requette sur des éléments avec la clause where incluant des données d'un tableau et en excluant des données d'un tableau.
Ca ressemble a ca :
Select * from table1 where value1 in (3,6,9)
and value 1 not in (6)
en gros ce que je cherche à faire c'est que le "not in" exclue la valeur meme s'il se trouve inclue dans la 1ere ...
Est ce que je m'y prend bien ?
Merci de votre aide.
A voir également:
- Requette select where in et not in
- Navigation in private - Guide
- Aux in ✓ - Forum Enceintes / HiFi
- Peut-on brancher un casque sur une prise auxiliaire ? - Forum Casque et écouteurs
- Dc in - Forum Disque dur / SSD
- Deco in paris avis ✓ - Forum Consommation & Internet
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, pourquoi pas:
Select * from table1 where value1 in (3,9)
C'est exactement ca, je ne sais pas ce qu'il y a dans le in et dans le out ! d'apres les tests que j'ai pu faire si une valeur se trouve dans le "in" et le "out" alors dans le "in" prime sur le "out"
En gros le out n'est pas pris en compte.
En gros le out n'est pas pris en compte.
Bonjour,
il n'y a pas d'histoire de "in" qui prime sur le "out". On est dans une logique purement booléenne, tu as un AND entre tes deux clauses, donc il faut nécessairement que les deux clauses soient vérifiées pour qu'une ligne se retrouve dans ton résultat.
Si ton "out" n'est pas pris en compte, c'est qu'il y a un autre problème (par exemple, dans la requête que tu as collée, il y a une espace entre le "value" et le "1"... Erreur de copie ?)
Peut-être qu'en nous donnant ton code complet (ta requête est bien générée dans un script autre ? En php peut-être ?) on pourrait pointer cette autre erreur.
Une autre solution, en exécutant la requête c'est de l'afficher à l'écran une fois générée (avec les variables remplacées par leur valeur) pour bien s'assurer qu'elle correspond à ce que tu veux.
Xavier
il n'y a pas d'histoire de "in" qui prime sur le "out". On est dans une logique purement booléenne, tu as un AND entre tes deux clauses, donc il faut nécessairement que les deux clauses soient vérifiées pour qu'une ligne se retrouve dans ton résultat.
Si ton "out" n'est pas pris en compte, c'est qu'il y a un autre problème (par exemple, dans la requête que tu as collée, il y a une espace entre le "value" et le "1"... Erreur de copie ?)
Peut-être qu'en nous donnant ton code complet (ta requête est bien générée dans un script autre ? En php peut-être ?) on pourrait pointer cette autre erreur.
Une autre solution, en exécutant la requête c'est de l'afficher à l'écran une fois générée (avec les variables remplacées par leur valeur) pour bien s'assurer qu'elle correspond à ce que tu veux.
Xavier
Bonjour,
Au pire .. avec un sous select
Au pire .. avec un sous select
SELECT Q.* FROM ( SELECT T.* FROM table1 T WHERE T.value1 IN ($varin) )Q WHERE Q.value1 NOT IN($varout)
Bonjour Jordane
Je ne comprends pas la logique qui t'amène à proposer une autre forme alors que sa requête est a priori correcte.
C'est conforter les gens dans l'opinion beaucoup trop répandue sur ce forum que programmer, c'est essayer des formules magiques au hasard jusqu'à ce qu'on tombe sur la bonne, plutôt que d'essayer de comprendre les règles des langages.
Il est clair que le problème de Moz n'est pas dans la forme de sa requête. Lui proposer de la changer, c'est l'induire en erreur en le laissant croire qu'elle est incorrecte.
Je ne comprends pas la logique qui t'amène à proposer une autre forme alors que sa requête est a priori correcte.
C'est conforter les gens dans l'opinion beaucoup trop répandue sur ce forum que programmer, c'est essayer des formules magiques au hasard jusqu'à ce qu'on tombe sur la bonne, plutôt que d'essayer de comprendre les règles des langages.
Il est clair que le problème de Moz n'est pas dans la forme de sa requête. Lui proposer de la changer, c'est l'induire en erreur en le laissant croire qu'elle est incorrecte.
Sûrement parce que ses listes sont des variables et qu'il ne sait pas a priori ce qu'il y a dedans.