SQL Comment faire un SELECT

Résolu
mathieu -  
 du crétin, point te moquer tu ne dois -
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).
Configuration: Windows Vista
Vinageer 0.2

11 réponses

  1. BadBoy3 Messages postés 128 Statut Membre 15
     
    select * from tab
    where value in (select value as test from tab
    group by value
    having count(name)>1)
    1
  2. p_oum Messages postés 992 Statut Membre 88
     
    Bonjour,

    SELECT name FROM nomTable WHERE value='1'
    0
  3. mathieu
     
    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
  4. p_oum Messages postés 992 Statut Membre 88
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mathieu
     
    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
  7. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
  8. mathieu
     
    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
  9. BadBoy3 Messages postés 128 Statut Membre 15
     
    jé pas bien compri
    plus de détaille svp
    0
  10. mathieu
     
    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
  11. BadBoy3 Messages postés 128 Statut Membre 15
     
    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
  12. du crétin, point te moquer tu ne dois
     
    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