SQL Comment faire un SELECT

Résolu/Fermé
mathieu - 27 nov. 2009 à 09:32
 du crétin, point te moquer tu ne dois - 27 nov. 2009 à 19:30
Bonjour,

j'aimerais connaître le moyen de faire un SQL Select uniquement sur les entrées où le champ "value" est égal à un autre au moins deux fois.
je m'explique :
TABLE
Champs : name -- type -- value
Entrées : Ja -- 0.8 -- 1
Entrées : Ba -- 0.9 -- 3
Entrées : Lo -- 0.6 -- 1


J'aimerais connaître le moyen de récupérer uniquement les valeurs du champ "NOM" pour la première et la troisième (car value est égal à 1).

11 réponses

BadBoy3 Messages postés 108 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 7 janvier 2011 15
27 nov. 2009 à 12:39
select * from tab
where value in (select value as test from tab
group by value
having count(name)>1)
1
p_oum Messages postés 963 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 2 avril 2012 87
27 nov. 2009 à 09:41
Bonjour,

SELECT name FROM nomTable WHERE value='1'
0
non, ça ne marche pas étant donné que je ne connais pas la valeur des 'values' et qu'il y aura certainement plusieurs avec la même valeur.

mais merci de ta réponse
0
p_oum Messages postés 963 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 2 avril 2012 87
27 nov. 2009 à 09:52
Que veux-tu exactement ?
car tu as écris

J'aimerais connaître le moyen de récupérer uniquement les valeurs du champ "NOM" pour la première et la troisième (car value est égal à 1).

Moi je comprend que tu veux récupérer tous les chaps name lorsque values est égale à 1 ce que fait la requete que je t'ai donner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'ai aussi écris ça :
j'aimerais connaître le moyen de faire un SQL Select uniquement sur les entrées où le champ "value" est égal à un autre au moins deux fois. 


Je veux récupérer la valeur de name à chaque fois que l'un des champs à la valeur 'value' au moins égale à une autre.
Exemple :
2 champs avec value = 4 => on récupère
16 champs avec value = 1 => on récupère
5 champs avec value = 2 => on récupère
1 champ avec value = 9 => on ne récupère pas
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
27 nov. 2009 à 11:22
Hello

select name, value
from Table where value in
(select value, count(1)
from Table
group by value
having count(1) > 1)

Ca devrait le faire...

0
Effectivement ça marche.
Merci, mais cela n'en sélectionne qu'un.
J'aimerais savoir comment tous les sélectionner (sans passer par une boucle while).

Merci encore,
0
BadBoy3 Messages postés 108 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 7 janvier 2011 15
27 nov. 2009 à 15:44
jé pas bien compri
plus de détaille svp
0
Et bien là, la requête sélectionne juste le premier champ.
J'aimerais qu'il sélectionne tous les champs sans faire de boucle.
exemple A et E ont pour valeur de value 1
sélectionne name de A et name de E dans un array.
0
BadBoy3 Messages postés 108 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 7 janvier 2011 15
27 nov. 2009 à 16:43
je te jure que jé rien compri
je ve t'aidé mais vous êtes pas assé claire
veuillez donner l'example par la table que tu as spécifié avec les resultats que tu veu qu'ils s'affiche a la fin
0
du crétin, point te moquer tu ne dois
27 nov. 2009 à 19:30
6. BadBoy3, le 27 nov 2009 à 12:39:11
Select * from tab
where value in (select value as test from tab
group by value
having count(name)>1)


7. mathieu, le 27 nov 2009 à 13:37:52
Effectivement ça marche.
Merci, mais cela n'en sélectionne qu'un.
J'aimerais savoir comment tous les sélectionner (sans passer par une boucle while).


La solution donnée par BadBoy est la bonne (excepté le as test qui ne sert à rien)
Comment peux-tu dire que ça n'en sélectionne qu'un ? Quel est donc ton système ?

sur
+----+-----+
!Name! val !
+----+-----+
!  A !  1  !
!  B !  2  !
!  C !  1  !
!  D !  2  !
!  E !  3  !
+----+-----+
Lorsque j'exécute la requête de BadBoy, j'ai bien A, B, C & D selectionnés et pas E !
0