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 :

ET logique sur les attributs des lignes !


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Points : 42
    Points
    42
    Par défaut ET logique sur les attributs des lignes !
    Bonjour,

    Je viens solliciter votre aide pour savoir si ce que je souhaite faire est réalisable directement en SQL (requête(s), Procédure(s), Function(s)...)

    Il s'agit en fait de récupérer des enregistrements d'une table sous la condition que des paramètres en entrée soient tous des attributs des enregistrement ...

    Bon je comprends bien que ce n'est pas clair mais ce n'est pas évident a expliquer.

    Pour illustrer, imaginons un jeu dans lequel pour gagner un lot il faut la totalité des bonnes réponses correspondant à ce lot.

    Imaginons une table du style :
    CADEAU (
    id int(11) auto_increment,
    nom_cadeau varchar(100),
    reponse varchar(100))

    Qui contiendrait :
    id | nom_cadeau | reponse
    1 | voiture | A
    2 | écran plat | B
    3 | écran plat | C
    4 | voiture | B
    5 | DVD | C
    6 | voiture | D

    Pour gagner :
    Un DVD : il faut la réponse C
    Un écran plat : il faut la réponse B et C
    Une voiture : il faut la réponse A, B, et D

    Le gain des cadeaux est cumulatif !

    En SQL j'aimerai récupérer directement en fonction des réponses d'un joueur la liste des cadeaux qu'il a gagné.

    Exemple :

    Réponse Joueur : A,B,C,D
    Cadeau : voiture, écran plat, DVD

    Réponse Joueur : C
    Cadeau : DVD

    Réponse Joueur : B,C
    Cadeau : écran plat, DVD

    Réponse Joueur : A,B
    Cadeau : rien !

    Auriez vous une idée ?

    Merci
    izioto

  2. #2
    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
    Il faudrait la description de la table des réponses des joueurs pour pouvoir faire la requête complète.

    Pour gagner :
    Un DVD : il faut la réponse C
    Un écran plat : il faut la réponse B et C
    Une voiture : il faut la réponse A, B, et D
    Pour savoir quels joueurs ont gagné une voiture, il faut que leurs réponses contiennent A ou B ou C et que le nombre de réponses répondant à ces critères soit de trois.

    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT joueur
    FROM reponse
    WHERE reponse_joueur IN (A, B, C)
    GROUP BY joueur
    HAVING COUNT(*) = 3
    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 !

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Il faudrait la description de la table des réponses des joueurs pour pouvoir faire la requête complète.
    CinePhil, le souci est que je n'ai pas de table joueur.

    J'ai simplement une liste de réponse et je dois trouver le ou les lots gagné correspondant.
    Je peux utiliser des requêtes SQL, des procédures et si nécessaire des fonctions !

    izioto

  4. #4
    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
    Donne la description complète de ta table mais le principe de requête que je t'ai expliquer devrait déjà t'aider à trouver la solution.
    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 !

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Points : 42
    Points
    42
    Par défaut
    Voici la table :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `JEU` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `cadeau` varchar(50) DEFAULT NULL,
      `reponse` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    et le contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    id	cadeau	reponse
    1	voiture	        A
    2	voiture	        B
    3	voiture	        D
    4	DVD	                C
    5	écran plat	        B
    6	écran plat	        C
    En supposant que j'ai les réponses "B et C", la requête, foncition ou autre doit me retourner "écran plat, DVD".

    izioto

Discussions similaires

  1. Utilisation des formules sur les attributs Date
    Par rdmontreal dans le forum W4 Express
    Réponses: 2
    Dernier message: 26/10/2011, 00h37
  2. Réponses: 5
    Dernier message: 29/03/2011, 15h05
  3. Contrainte sur les attributs des tables référencées
    Par prgasp77 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/12/2010, 18h00
  4. [E - 07] Aide sur les attributs des éléments du ruban
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2009, 18h29
  5. Réponses: 3
    Dernier message: 01/07/2008, 16h51

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