Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2792 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  WHERE EXISTS (SQL)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

WHERE EXISTS (SQL)

n°2276899
Sugoy
Ad augusta, per angusta
Posté le 03-03-2016 à 19:07:08  profilanswer
 

Bonjour,
 
Je me permets de vous solliciter afin de m'aider à comprendre la fonction "where exists" en SQL.
 
Dans ma compréhension des choses, il est indispensable de faire une jointure.
 
Mais...un ami m'a mis le doute.
 
Est-ce que quelque chose comme ça, ça peut passer?
 
Select Colonne A, Colonne B  
from TABLE A  
where exists  (select * from TABLE B where Colonne A > 2)
;
 
Sachant que la colonne A des deux tables a le même nom et le même genre de données.
 
Merci de votre aide ! :bounce:  
 

mood
Publicité
Posté le 03-03-2016 à 19:07:08  profilanswer
 

n°2276902
flo850
moi je
Posté le 03-03-2016 à 20:49:10  profilanswer
 

SI tu as un doute, utilise le nom complet

Code :
  1. SELECT A.ColonneA, A.ColonneB
  2. FROM A
  3. WHERE EXISTS(SELECT * FROM  B WHERE B.ColonneA > 2)


Au passage, c'est assez déguelasse comme requête : tu retournes toutes les lignes de A , à condiion que V ait au moins une ligne > 2  
Mais j'imagine qu' c'est juste un exemple


---------------

n°2276907
Sugoy
Ad augusta, per angusta
Posté le 03-03-2016 à 22:51:52  profilanswer
 

Merci Flo mais je ne suis pas sûr de bien comprendre...

 

Car du coup y a aucune jointure entre la table A et la table B.

 

Cela fonctionne tout de même? Le "matching" se fait entre la colonne A de la table B et la colonne A de la table A ?

 


Moi j'aurais ajouté la jointure "a.colonne A = b.colonne" mais si je comprends ce que tu me dis, ce n'est pas nécessaire?

 
Code :
  1. SELECT A.ColonneA, A.ColonneB
  2. FROM A
  3. WHERE EXISTS(SELECT * FROM  B WHERE a.colonne A = b.colonne A AND B.ColonneA > 2)


Message édité par Sugoy le 03-03-2016 à 23:00:19
n°2276909
flo850
moi je
Posté le 03-03-2016 à 22:59:08  profilanswer
 

a ben non, si tu veux qu'il y aune jointure, faut lui dire. Tu peux décrire ce que tu veux en français ?  
 
Tu utilise quel sql : mysql (mouais) ? sql server (bof)  ? oracle (beurk)? postgresql (bien)?


---------------

n°2276910
Sugoy
Ad augusta, per angusta
Posté le 03-03-2016 à 23:01:31  profilanswer
 

Alors je t'explique le contexte.
C'est un "examen" sur papier.

 

Il y a des formules SQL et je dois dire si c'est bon ou mauvais.

 

Et la requête qui est proposée est

 
Code :
  1. SELECT  ColonneA, ColonneB
  2. FROM TABLE A Alias
  3. WHERE EXISTS(SELECT * FROM  TABLE B WHERE ColonneB > 2)
 

Alors déjà je trouve bizarre que la tabvle A soit associée à un alias alors qu'il ne sert à rien.

 

Ensuite je trouve bizarre la colonne B liée à deux tables différentes.

 

Si on ne fait pas la jointure ça marche tout de même?
Le requêteur va juste regarder les valeurs de la colonneB (table B) sans se soucier du matching avec la table A?

 

EDIT : bon, je crois que j'ai compris. La sous requête n'est pas obligée d'avoir un rapport...C'est juste une condition pour savoir si la requête ramène quelque chose...

 

En gros : Select * from TABLE A where exist (select * from table B where colonne A >2) ça veut dire que si dans la table B, il y a au moins une ligne dans la colonne A > 2, alors la requête sortira quelque chose.

 

Ca ne veut pas dire que y aura un matching entre la table A et la table B.

 

J'ai bon?

 


Message édité par Sugoy le 03-03-2016 à 23:11:18
n°2276911
Sugoy
Ad augusta, per angusta
Posté le 03-03-2016 à 23:09:29  profilanswer
 

J'en profite pour une autre question sur le SQL.
 
http://sql.sh/cours/case
 
CASE
WHEN
WHEN
ELSE
END
 
 
C'est toujours la structure? Le ELSE est indispensable?
On ne peut pas faire un  
 
CASE
WHEN
WHEN
WHEN
END
 
?
 
Exemple :
 

Code :
  1. SELECT champ 1,
  2. CASE WHEN champ 2 = 'A' THEN 1
  3.        WHEN champ 2 = 'B' THEN 2
  4.        WHEN champ 2 = 'C' THEN 3
  5. END
  6. FROM table X
  7. GROUP BY champ 1


 
 
Merci ! :bounce:

n°2276924
flo850
moi je
Posté le 04-03-2016 à 08:07:23  profilanswer
 

1/ c est ca. Si tu veux tu peux ajouter des conditions genre where a.colonneb >b.colonneb
2/ pas obligatoire


---------------

n°2276926
Sugoy
Ad augusta, per angusta
Posté le 04-03-2016 à 08:18:55  profilanswer
 

Merci d'avoir pris le temps de me répondre ! :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  WHERE EXISTS (SQL)

 

Sujets relatifs
Aide SQL très simple[SQL/SAS] Requête qui ne fonctionne pas
SGBD à moyenne volumétrie : MySQL => SQL Server ?Requête SQL avec liaison multi-tables
[Résolu] Requete SQL[SQL] Select un nbre max de données = selectionner une ligne sur n.
[SQL] Requètes imbriquées ?[SQL] Jointure pour villes dans région
Aide pour finir - requete SQL avec search avec jointures[SQL] [facile] selection des données de plus de 256 lignes.
Plus de sujets relatifs à : WHERE EXISTS (SQL)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR