SQL - deux tables

6 réponses
AuteurMessage

radins |
Modérateur

Photo de radins

Inscrit le : 09/05/2005

# Le 20/11/2005 à 19:29

J'ai deux tables.. j'aimerais si possible trouver les lignes dans la table 1 qui ont une valeur x dans un champ et qui n'ont pas de correspondance dans la table 2 (la correspondance se faisant sur l'id)

donc table 1

id | titre | X ...
---------
1 | un | 0
2 | deux | 0
3 | trois | 0
4 | quatre | 1

Table 2

id | truc ...
1 | sdsdf
1 | dsfsd
3 | dsdq
5 | dqsdqs

Dans ce cas je voudrais par exemple qu'il me sorte toutes les lignes de table 1 qui n'ont pas de correspondance id dans table 2 et dont X contient 1 .. mon problème est que je ne peux pas faire de JOIN étant donné que je cherche justement ceux qui n'ont pas de correspondance.. existe-t-il une sorte de Join négatif ou un autre moyen de résoudre ça en une requête?

J'ai essayé:

SELECT t1.id
FROM table1 t1, table2 t2
WHERE t1.id!=t2.id AND t1.X=1

Mais ça ne fait que râmer mon serveur donc je pense qu'il y a une coquille dedans..

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 20/11/2005 à 19:40

SELECT t1.id
FROM table1 AS t1
WHERE t1.id NOT IN (SELECT t2.id FROM table2 as t2) AND t1.X=1

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 20/11/2005 à 19:41

essaye avec un join ... a tout hasard ...

select id from table1 join table2 on table1.id=table2.id WHERE table1.X=1

@+ Jean-Philippe

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 20/11/2005 à 19:43

flush a dit :
essaye avec un join ... a tout hasard ...

select id from table1 join table2 on table1.id=table2.id WHERE table1.X=1

il dit que ce n'est pas possible ;-)
sinon tu peux faire un LEFT JOIN et prendre ceux qui ont la valeur NULL

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 20/11/2005 à 19:54

Ha vi , j'avais mal vu lol !

Effectivement a part le left join ou la sous requète y a pas d'autres soluces !

@+ Jean-Philippe

radins | Tobias
Modérateur

Photo de radins

Inscrit le : 09/05/2005

# Le 20/11/2005 à 22:44

Julgates a dit :
SELECT t1.id
FROM table1 AS t1
WHERE t1.id NOT IN (SELECT t2.id FROM table2 as t2) AND t1.X=1


Ça marchait pas, par contre j'ai pu le faire avec le LEFT JOIN (encore un truc d'appris :-) )

Merci les gars.

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 20/11/2005 à 23:10

Oui, faut y aller effectiement au left join en testant que ca retourne une valeur NULL justement

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 23/11/2024 22:32:59 | Généré en 4.92ms | Contacts | Mentions légales |