Solution d'une requette de selection

Résolu
amylee1984 Messages postés 153 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 20 août 2006 - 15 juin 2006 à 14:22
amylee1984 Messages postés 153 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 20 août 2006 - 15 juin 2006 à 14:59
salut , j'ai une requette que j'arrive pas a resoudre je m'explique :
voici mes tables :
VINS (nv, cru, millésime, degré)
BUVEURS (nb, nom, adresse)
ABUS (nb, nv, quantité)

la requette c'est : Editer le nom et l'adresse des buveurs qui n'ont jamais bu moins de 3 verres.

la requette que j'ai fais c'est la suivant :

select nom,adresse from BUVEURS,ABUS
where BUVEUR.nb=ABUS.nb
and quantité>3

mais le probleme c'est qu'on peut trouvé par exemple un buveur "x" qui est selectioné dans la requette comme s'il a bus plus de 3 verres mais en meme temps il a bus un jour 2 verres,
comment je peut traité le cas de "jamais bu mois de 3 verres "
merci d'avance

2 réponses

cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
15 juin 2006 à 14:47
Salut,
Tous d'abord intéressont nous à la Condition :

Il Faut détecter tous les buveurs qui n'ont jamais bu moins de trois verres, SQL c'est Comme les maths des fois c'est plus simple quand ont prend le raisonnement a l'enver donc pour le cas présent tous les buveurs qui ont au moins une fois bu moins de 3 verres ca c'est trivial :
SELECT nb FROM ABUS WHERE quantité <3 GROUP BY nb

En fait je me fous du GROUP BY nb c'est juste pour éviter les doublons.

Ensuite je demande tous les Buveurs qui ne sont pas dans cette liste ce que j'obtient grâce a une construction NOT IN () dans la condition :

SELECT nb,nom,adresse FROM BUVEURS
WHERE nb NOT IN ( SELECT nb FROM ABUS WHERE quantité <3)

Tu remarquera que j'ai aussi récupérer l' nb car je pense qu'au moment d'enreistrer les modification tu en aura besoin...
3
amylee1984 Messages postés 153 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 20 août 2006 3
15 juin 2006 à 14:59
merci pour votre réponse
0
Rejoignez-nous