PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 23/01/2023 16:27:15

Jeremax
Membre

Comment ecrire une requete SQL sur deux tables differentes

Bonjour,

Je dois écrire une requête SQL sur une Base Postgres, en interrogeant  une première table pour une valeur x et vérifier si cette valeur n’existe pas dans une autre table.
On m'a conseillé le  WHERE "valeur" NOT IN (SELECT from seconde table) mais cela ne fonctionne pas.

Merci par avance de votre aide.

Cordialement

Hors ligne

#2 24/01/2023 04:33:22

rjuju
Administrateur

Re : Comment ecrire une requete SQL sur deux tables differentes

Bonjour,


Si je comprends bien le besoin il vous faut un LEFT JOIN entre les 2 tables, cf https://www.postgresql.org/docs/current … sions.html .

Hors ligne

#3 24/01/2023 09:51:56

Marc Cousin
Membre

Re : Comment ecrire une requete SQL sur deux tables differentes

Ou un NOT EXISTS si c'est simplement pour un test d'existence. le NOT IN est plus dangereux: il peut y avoir des NULL dans la seconde liste, alors il y a des optimisations qui pourraient ne pas être faisables. Le LEFT JOIN risque de vous dupliquer les enregistrements s'ii y en a plus d'un qui correspond

Quelque chose du genre

SELECT * from t1 where NOT EXISTS (SELECT 1 FROM t2 where t1.a=t2.a)

Dernière modification par Marc Cousin (24/01/2023 09:52:52)


Marc.

Hors ligne

#4 24/01/2023 12:16:17

Jeremax
Membre

Re : Comment ecrire une requete SQL sur deux tables differentes

Bonjour,

Merci pour vos réponses.
Sur cette dernière réponse: SELECT * from t1 where NOT EXISTS (SELECT 1 FROM t2 where t1.a=t2.a) étant novice pouvez-vous m'expliquer ce qu'il faut comprendre par:
select 1 cela correspond à quoi ?
et where t1.a=t2.a) ".a" est-ce la valeur que je veux chercher??

Merci beaucoup de votre aide.

Hors ligne

#5 24/01/2023 12:18:41

Marc Cousin
Membre

Re : Comment ecrire une requete SQL sur deux tables differentes

Le select 1 est en fait juste une "astuce" d'écriture. Le not exists vérifie juste que la sous-requête retourne un enregistrement. Son contenu n'a absolument aucune importance. J'ai pris l'habitude de l'écrire comme ça parce que pour le relecteur éventuel de la requête, c'est comme ça évident que le contenu de la sous-requête ne sert à rien. Ça pourrait être select 0 ou select 'toto' ça marcherait exactement pareil


Marc.

Hors ligne

#6 24/01/2023 12:35:45

Jeremax
Membre

Re : Comment ecrire une requete SQL sur deux tables differentes

OK j'ai compris par contre pour le Where t1.a=T2.a est-ce la valeur recherchée??
Merci beaucoup de votre aide.

Hors ligne

#7 24/01/2023 12:36:42

Marc Cousin
Membre

Re : Comment ecrire une requete SQL sur deux tables differentes

exactement. C'est le critère qui met en correspondance les enregistrements des deux tables.


Marc.

Hors ligne

#8 24/01/2023 12:38:02

Jeremax
Membre

Re : Comment ecrire une requete SQL sur deux tables differentes

Super je teste de suite et vous tiens au courant.
merci encore

Hors ligne

Pied de page des forums