Simplifier requête SQL avec plusieurs conditi

Fermé
Raphy59 - 7 oct. 2009 à 18:59
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 - 8 oct. 2009 à 20:39
Bonjour,

J'ai une requête SQL qui ressortirait plusieurs résultat, sauf certaines adresse IP

Ma requête SQL ressemblerai donc à ca

SELECT *
FROM table1
WHERE ip!=15236548 OR ip!=1552156 OR ip!=86475025 OR ip!=53547895 OR ip!=384864864 OR ip!=34884354 OR ip!=65894132 OR ip!=547894556



Le problème est qu'il risque d'en avoir un certain nombre...

Quelqu'un sais si il existe une requête plus simple, du style

SELECT *
FROM table1
WHERE ip!=( "15236548" OR "12546484" OR "343846846" OR "12145457" OR "26615118" OR "518543535" )



Merci :)

4 réponses

incaout Messages postés 347 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 novembre 2012 74
7 oct. 2009 à 19:18
Salut,

Ce que tu peux faire est une table où tu enregistres les IP à exclure. Ensuite, tu peux utiliser la requete suivante :

SELECT *
FROM table1 t1
WHERE t1.ip NOT IN (SELECT t2.ip FROM table2 t2);

2eme solution : ajouter un champ exclus à valeur vrai ou faux dans ta table t1. Tu mets à vrai toutes les ip à exclure et tu utilises :

SELECT *
FROM table1
WHERE exclus = false

J'espère que cela répondra à ta problématique.

Cdlt

IC
0
Merci de ta réponse je n'avais pas vue le problème sous cet angle, je vais surement utiliser la première suggestion.

Mais par curiosité, si quelqu'un serai me dire si il est possible de faire ce que je proposais dans mon premier sujet, ça serait bon à savoir :)
0
incaout Messages postés 347 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 novembre 2012 74
8 oct. 2009 à 19:18
Salut,

Je pense que cela va dépendre de la base que tu utilises et de ce qu'elle accepte comme instruction. Je sais que quand tu crées une table, tu peux définir des contraintes de champ dont la valeur doit appartenir par exemple à liste de valeur et tu utilises IN ("a","b","c") par exemple. Mais je ne sais pas si cela s'applique à une requête. Pour en avoir le coeur net, le mieux est de tester.

Cdlt

IC
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
8 oct. 2009 à 20:39
« Mais par curiosité, si quelqu'un serai me dire si il est possible de faire ce que je proposais dans mon premier sujet, ça serait bon à savoir :) »

Bah oui, tu fais comme incaout l'a indiqué avec le IN

SELECT les_colonnes
FROM table1
WHERE ip  NOT IN(15236548, 12546484, 343846846, 12145457, 26615118, 518543535);
0