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

MySQL Discussion :

Sélection du résultat lors d'un group by


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut Sélection du résultat lors d'un group by
    Bonsoir,

    Lorsque l'on fait un GROUP BY, est-il possible de choisir les valeurs que l'on veut garder dans le SELECT.

    Exemple : J'ai des recettes de base pour faire des confitures et ensuite j'ai des variantes. Je veux la liste des recettes et dans cette liste une seule recette par fruit sachant que la recette de saison l'emporte sur la recette de base.

    Ma requete ressemblerait à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT fruit, CASE WHEN recette = "saison" THEN recette ELSE recette END AS recette 
    FROM ma_table
    GROUP BY fruit
    Donc je veux avoir la recette de saison du fruit lorsqu'elle existe et celle de base sinon.

    Merci pour votre éclairage

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    je ne comprends ton THEN recette ELSE recette... si dans tous les cas tu veux la même chose ce n'est pas la peine de faire un CASE

  3. #3
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Oui mais alors comment lui dire que je veux dans le group by la recette de la saison si elle existe. La recette de base étant celle par défaut.

  4. #4
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Il faut peut-être ne pas utiliser le GROUP BY et faire comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT recette
    FROM ma_table
    WHERE recette NOT IN(
    SELECT recette
    FROM ma_table
    WHERE recette = "saison")
    AND recette = "base"
    UNION
    SELECT recette
    FROM ma_table
    WHERE recette = "saison"

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    On peut avoir la structure de la table et un exemple de données ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  6. #6
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    --
    -- Structure de la table `test_recettes`
    --
     
    CREATE TABLE IF NOT EXISTS `test_recettes` (
      `id_recette` int(3) NOT NULL auto_increment,
      `fruit` varchar(15) NOT NULL,
      `recette` varchar(15) NOT NULL,
      `explication` text NOT NULL,
      PRIMARY KEY  (`id_recette`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
     
    --
    -- Contenu de la table `test_recettes`
    --
     
    INSERT INTO `test_recettes` (`id_recette`, `fruit`, `recette`, `explication`) VALUES
    (1, 'pommes', 'base', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non nisi nisl, vel condimentum eros. Suspendisse tempus venenatis iaculis. Duis congue placerat rutrum. Nunc et leo justo. In hac habitasse platea dictumst. Maecenas sit amet hendrerit sem. Vestibulum eget risus ut nibh iaculis tincidunt id tincidunt arcu. Sed eget elit sapien, a vulputate nibh. Fusce sollicitudin pulvinar sapien ut auctor. Proin molestie fringilla lorem nec pretium. In molestie imperdiet aliquet. Maecenas hendrerit massa a urna vulputate tincidunt. Morbi venenatis nulla quis nunc feugiat eget congue dui imperdiet. Etiam tristique, turpis gravida semper porttitor, lectus dolor aliquet dolor, tincidunt mattis diam justo et metus. Duis rutrum ante id nunc accumsan porttitor. Donec eros velit, molestie eget interdum eget, porta quis massa. Proin non aliquam lorem. '),
    (2, 'pommes', 'printemps', 'Pellentesque ut tellus ut elit malesuada aliquet quis a ante. Morbi pulvinar nibh in mauris aliquet hendrerit. Morbi suscipit gravida erat vitae tempor. Integer posuere luctus justo sit amet auctor. Donec justo nisi, vestibulum sed volutpat vel, consectetur nec est. Nulla pretium massa sit amet quam blandit eget placerat lacus venenatis. In feugiat metus id sem porttitor eu luctus nisl aliquet. Cras nec nibh ipsum. Nam enim lorem, malesuada sed ullamcorper nec, interdum et magna. Integer ante purus, luctus at luctus tempus, auctor ut nisi. Sed ullamcorper suscipit vulputate. Sed sed volutpat lacus. Maecenas eu quam ac purus porttitor sodales quis ut nisi. Nunc semper ante ut orci molestie sagittis. '),
    (3, 'poires', 'base', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non nisi nisl, vel condimentum eros. Suspendisse tempus venenatis iaculis. Duis congue placerat rutrum. Nunc et leo justo. In hac habitasse platea dictumst. Maecenas sit amet hendrerit sem. Vestibulum eget risus ut nibh iaculis tincidunt id tincidunt arcu. Sed eget elit sapien, a vulputate nibh. Fusce sollicitudin pulvinar sapien ut auctor. Proin molestie fringilla lorem nec pretium. In molestie imperdiet aliquet. Maecenas hendrerit massa a urna vulputate tincidunt. Morbi venenatis nulla quis nunc feugiat eget congue dui imperdiet. Etiam tristique, turpis gravida semper porttitor, lectus dolor aliquet dolor, tincidunt mattis diam justo et metus. Duis rutrum ante id nunc accumsan porttitor. Donec eros velit, molestie eget interdum eget, porta quis massa. Proin non aliquam lorem. '),
    (4, 'poires', 'printemps', 'Pellentesque ut tellus ut elit malesuada aliquet quis a ante. Morbi pulvinar nibh in mauris aliquet hendrerit. Morbi suscipit gravida erat vitae tempor. Integer posuere luctus justo sit amet auctor. Donec justo nisi, vestibulum sed volutpat vel, consectetur nec est. Nulla pretium massa sit amet quam blandit eget placerat lacus venenatis. In feugiat metus id sem porttitor eu luctus nisl aliquet. Cras nec nibh ipsum. Nam enim lorem, malesuada sed ullamcorper nec, interdum et magna. Integer ante purus, luctus at luctus tempus, auctor ut nisi. Sed ullamcorper suscipit vulputate. Sed sed volutpat lacus. Maecenas eu quam ac purus porttitor sodales quis ut nisi. Nunc semper ante ut orci molestie sagittis. '),
    (5, 'bananes', 'base', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non nisi nisl, vel condimentum eros. Suspendisse tempus venenatis iaculis. Duis congue placerat rutrum. Nunc et leo justo. In hac habitasse platea dictumst. Maecenas sit amet hendrerit sem. Vestibulum eget risus ut nibh iaculis tincidunt id tincidunt arcu. Sed eget elit sapien, a vulputate nibh. Fusce sollicitudin pulvinar sapien ut auctor. Proin molestie fringilla lorem nec pretium. In molestie imperdiet aliquet. Maecenas hendrerit massa a urna vulputate tincidunt. Morbi venenatis nulla quis nunc feugiat eget congue dui imperdiet. Etiam tristique, turpis gravida semper porttitor, lectus dolor aliquet dolor, tincidunt mattis diam justo et metus. Duis rutrum ante id nunc accumsan porttitor. Donec eros velit, molestie eget interdum eget, porta quis massa. Proin non aliquam lorem. ');
    Je veux extraire pour chaque fruit 1 seule recette qui doit être celle du printemps si elle existe, sinon celle de base.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/07/2010, 23h34
  2. Réponses: 2
    Dernier message: 08/07/2010, 15h50
  3. Sélection de résultats identiques
    Par daajack dans le forum Débuter
    Réponses: 4
    Dernier message: 19/03/2008, 09h01
  4. Sélection du premier enregistrement de chaque groupe
    Par mout1234 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/05/2007, 16h27
  5. fonction: renvoyer résultat d'un count .. group by ?
    Par ctobini dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/09/2006, 14h21

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