OVH Cloud OVH Cloud

select in

3 réponses
Avatar
Majid LAISSI
bonjour,

j'ai une question sur une requete sql
j'ai deux tables, avec un CHAMPS en commun
je voudrai selectionner les lignes de la première qui n'ont pas de champs
CHAMPS correspondant dans la deuxième
enfin vous comprendrez..
j'ai pensé à quelque chose comme:

SELECT * FROM TABLE1 WHERE TABLE1.CHAMPS NOT IN ( select CHAMPS from
TABLE2);

mais je crois que la syntaxe n'est pas très correcte.

pouvez vous m'aider svp ?
merci

3 réponses

Avatar
Laurent Moreau
IN ne va fonctionner que si CHAMPS correspond a un seul champ (si je puis
dire).

Quand on a plusieurs champs on ne peut que utiliser EXISTS:
SELECT * FROM TABLE1
WHERE
NOT EXISTS (SELECT * FROM Table2
WHERE Table1.champ1=Table2.champ1 AND Table1.champ2=Table2.champ2
AND.....
)



La requete avec le IN (un seul champ de comparaison):
SELECT * FROM TABLE1 WHERE TABLE1.CHAMP1 NOT IN ( select CHAMP1 from
TABLE2)




Laurent



"Majid LAISSI" wrote in message
news:
bonjour,

j'ai une question sur une requete sql
j'ai deux tables, avec un CHAMPS en commun
je voudrai selectionner les lignes de la première qui n'ont pas de champs
CHAMPS correspondant dans la deuxième
enfin vous comprendrez..
j'ai pensé à quelque chose comme:

SELECT * FROM TABLE1 WHERE TABLE1.CHAMPS NOT IN ( select CHAMPS from
TABLE2);

mais je crois que la syntaxe n'est pas très correcte.

pouvez vous m'aider svp ?
merci




Avatar
Laurent Moreau
IN ne va fonctionner que si CHAMPS correspond a un seul champ (si je puis
dire).

Quand on a plusieurs champs on ne peut que utiliser EXISTS:
SELECT * FROM TABLE1
WHERE
NOT EXISTS (SELECT * FROM Table2
WHERE Table1.champ1=Table2.champ1 AND Table1.champ2=Table2.champ2
AND.....
)



La requete avec le IN (un seul champ de comparaison):
SELECT * FROM TABLE1 WHERE TABLE1.CHAMP1 NOT IN ( select CHAMP1 from
TABLE2)




Laurent



"Majid LAISSI" wrote in message
news:
bonjour,

j'ai une question sur une requete sql
j'ai deux tables, avec un CHAMPS en commun
je voudrai selectionner les lignes de la première qui n'ont pas de champs
CHAMPS correspondant dans la deuxième
enfin vous comprendrez..
j'ai pensé à quelque chose comme:

SELECT * FROM TABLE1 WHERE TABLE1.CHAMPS NOT IN ( select CHAMPS from
TABLE2);

mais je crois que la syntaxe n'est pas très correcte.

pouvez vous m'aider svp ?
merci




Avatar
Majid LAISSI
ca a marché
merci beaucoup :)


"Laurent Moreau" a écrit dans le message
de news: capd5v$fgc$
IN ne va fonctionner que si CHAMPS correspond a un seul champ (si je puis
dire).

Quand on a plusieurs champs on ne peut que utiliser EXISTS:
SELECT * FROM TABLE1
WHERE
NOT EXISTS (SELECT * FROM Table2
WHERE Table1.champ1=Table2.champ1 AND Table1.champ2=Table2.champ2
AND.....
)



La requete avec le IN (un seul champ de comparaison):
SELECT * FROM TABLE1 WHERE TABLE1.CHAMP1 NOT IN ( select CHAMP1 from
TABLE2)




Laurent



"Majid LAISSI" wrote in message
news:
> bonjour,
>
> j'ai une question sur une requete sql
> j'ai deux tables, avec un CHAMPS en commun
> je voudrai selectionner les lignes de la première qui n'ont pas de


champs
> CHAMPS correspondant dans la deuxième
> enfin vous comprendrez..
> j'ai pensé à quelque chose comme:
>
> SELECT * FROM TABLE1 WHERE TABLE1.CHAMPS NOT IN ( select CHAMPS from
> TABLE2);
>
> mais je crois que la syntaxe n'est pas très correcte.
>
> pouvez vous m'aider svp ?
> merci
>
>