1- Aide Requête SQL

chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   -  
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

fournisseur(numf,nomf)
numf | nomf
1 | fournisseur1
2 | fournisseur2
3 | fournisseur3
4 | fournisseur4

select * from fournisseur where exists (select * from fournisseur where numf<3);



je sais , cette requête n'a pas de sens !
mais quand méme , j'ai pas convaincu par le résultat d'exécution:
numf | nomf
1 | fournisseur1
2 | fournisseur2
3 | fournisseur3
4 | fournisseur4

j'ai attendu un résultat comme ceci:
numf | nomf
1 | fournisseur1
2 | fournisseur2


est-ce-que c'est juste ou pas ???



To Be Or Not To Be , Marwen

1 réponse

jee pee Messages postés 41553 Date d'inscription   Statut Modérateur Dernière intervention   9 725
 
Salut,

Tu as tort et la machine a raison (c'est quasiment toujours le cas).

D'abord la requête effectivement n'a pas de sens. Et c'est souvent pourquoi faire une démonstration avec une requête tordue n'est pas heureux.

WHERE EXISTS retourne VRAI quand la sous-requête ramène au moins une ligne. Dans ton cas la sous requête ramène 2 lignes donc la réponse est VRAI pour chaque enregistrement de la requête principale ;-))

WHERE EXISTS s'utilise normalement avec au moins 2 tables et un lien entre les 2 tables : les clients ayant au moins une commande :

select * from client
where exists (select * from commande where commande.idclient = client.idclient)


L'utilisation de cette fonction dans ton select tordu devrait donc être :

select * from fournisseur A
where exists
(select * from fournisseur B where B.numf<3 and A.numf = B.numf);

cdlt


Un étranger, c'est un ami qu'on n'a pas encore rencontré.
0
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   9
 
ouai ,j'ai compris :)
je sais ma requête n'a pas de sens (c'est just pour comprendre la clause EXISTS)
enfin je vais pas mettre mon sujet résolu, je vais pas rater l'occasion ! j'ai d'autre questions très probable , merci :)
0