IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Sélection des utilisateurs ayant tout bon


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Points : 45
    Points
    45
    Par défaut Sélection des utilisateurs ayant tout bon
    Bonjour ) toutes et tous

    Bon le titre est assez peu explicite... alors je m'explique:

    -Un utilisateur vote pour un produit dans chaque catégorie.
    -Il y a 5 catégories

    A l'issu du jeu, nous déterminons les produits gagnants
    Aussi peut-on dire que les produits gagnants ont respectivement un ID de 1,7,20,26,35

    Dans ma table 'vote' Chaque ID utilisateur apparaît 5 fois
    ce que je souhaite, c'est de pouvoir faire la requête suivant .
    SÉLECTIONNER les id des utilisateurs ayant choisi les ID 1 et 7 et 20 et 26 et 35

    J'ai trois tables jointes, ça pas de problème...

    Mais seulement je n'arrive à rien pas au résultat voulu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT id_user 
    from util 
    WHERE id_produit =1 
        AND id_produit =7 
        AND id_produit =20 
        AND id_produit =26 
        id_produit =35;
    Cette requête fonctionne partiellement car elle ne me retourne pas d'erreur, mais s'arrête à la première condition (ID =1).

    J'espère avoir été clair.
    Merci pour vos conseils.

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 790
    Points
    84 790
    Billets dans le blog
    15
    Par défaut


    Vous pouvez essayer cette requête :

    [CODE]
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_user FROM vote WHERE id_produit IN (1,7,20,26,35);
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par fhbcrea
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT id_user 
    from util 
    WHERE id_produit =1 
        AND id_produit =7 
        AND id_produit =20 
        AND id_produit =26 
        id_produit =35;
    Cette requête fonctionne partiellement car elle ne me retourne pas d'erreur
    Ça m'étonnerait ; il manque un AND avant la dernière condition.

    mais s'arrête à la première condition (ID =1)
    En fait elle ne devrait de toute façon pas retourner de résultat puisque, logiquement, pour une ligne de la table, id_produit ne peut pas avoir toutes les valeurs souhaitées en même temps.

    Dans ma table 'vote' Chaque ID utilisateur apparaît 5 fois
    ce que je souhaite, c'est de pouvoir faire la requête suivant .
    SÉLECTIONNER les id des utilisateurs ayant choisi les ID 1 et 7 et 20 et 26 et 35
    Pourquoi alors faire une requête sur la table "util" ?

    Citation Envoyé par milkoseck
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_user FROM vote WHERE id_produit IN (1,7,20,26,35);
    Réponse incomplète !
    Cette requête va donner tous les utilisateurs ayant voté pour au moins un des produits figurant dans la liste IN.

    La bonne réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id_user 
    FROM vote 
    WHERE id_produit IN (1,7,20,26,35)
    GROUP BY id_user
    HAVING COUNT(*) = 5 -- 5 = le nombre d'éléments dans la liste IN
    Le principe : On sélectionne les lignes grâce à la liste IN puis on compte combien de lignes sont retenues pour chaque utilisateur et enfin on ne garde que les utilisateurs qui ont le nombre de lignes égal au nombre d'éléments dans la liste IN.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 790
    Points
    84 790
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par CinePhil Voir le message

    Réponse incomplète !
    Cette requête va donner tous les utilisateurs ayant voté pour au moins un des produits figurant dans la liste IN.

    La bonne réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id_user 
    FROM vote 
    WHERE id_produit IN (1,7,20,26,35)
    GROUP BY id_user
    HAVING COUNT(*) = 5 -- 5 = le nombre d'éléments dans la liste IN
    Le principe : On sélectionne les lignes grâce à la liste IN puis on compte combien de lignes sont retenues pour chaque utilisateur et enfin on ne garde que les utilisateurs qui ont le nombre de lignes égal au nombre d'éléments dans la liste IN.
    CinePhil

    Merci pour la précision
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Points : 45
    Points
    45
    Par défaut
    milkoseck, CinePhil merci à vous!


    Bon la suite ça fait un peu eau de rose, et je passe à de la pommade. Mais bon il faut dire les choses...
    CinePhil , Vous mériteriez des fleurs pour vos contributions actives... affublé d'un sens pointu de la pédagogie et "sans jugement" sur la qualité rédactionnelle des contributeurs.
    Une belle âme et une tête bien faite.
    Je vous envie.


    Encore merci.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/07/2014, 14h27
  2. Réponses: 15
    Dernier message: 03/06/2014, 18h56
  3. Réponses: 2
    Dernier message: 14/09/2010, 20h55
  4. Réponses: 1
    Dernier message: 16/10/2006, 18h07
  5. sélection des bd en fonction des utilisateurs (pg_hba.conf)
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 18/03/2004, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo