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

Langage SQL Discussion :

Regrouper les résultats de 3 requêtes en une seule


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut Regrouper les résultats de 3 requêtes en une seule
    Bonjour!


    Je pense que cela n'est pas possible, mais j'aimerais pouvoir renvoyer des lignes de 3 tables différentes dans une même requete.
    Je m'explique:
    J'ai une table User qui est relié à 3 tables :
    imprimantes, ordinateurs, écrans.
    Mes 3 select renvoie la liste des ordi, imprimantes et écran pour chaque utilisateur.
    Est - il possible de renvoyer les résultats de ces requêtes en une seule requête?Comment procéder?

    SGBD : MySql

    Merci d'avance!

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    En utilisant le mot-clef UNION entre les 3 requêtes. Il faut pour ça que le type de chaque colonne soit le même dans les 3 requêtes.
    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT id_imprim as id, 'imprimante' as type, user
    FROM table_imprimantes
    where user = ...
    UNION
    SELECT id_ordi as id, 'ordinateur' as type, user
    FROM table_ordinateurs
    where user = ...
    UNION
    SELECT id_ecran as id, 'ecran' as type, user
    FROM table_ecrans
    where user = ...
    J'ai ajouté une colonne 'type' pour permettre, dans le résultat obtenu, de savoir à quoi correspond chaque ligne. A adapter à votre schéma, bien évidemment .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    Merci ced pour cette réponse rapide, mais j'ai cru voir que UNION n'était pas disponible sous MySql (dans un des nombreux tutos de SQL Pro)...

    Je vais quand même essayer...

  4. #4
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    Hé bien ça a l'air de marcher en fait!
    Merci bien ced, en plus je ne connaissais pas le truc du 'imprimante' AS type
    , ca va trop me servir!

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Citation Envoyé par ToutPaumé Voir le message
    [...] j'ai cru voir que UNION n'était pas disponible sous MySql (dans un des nombreux tutos de SQL Pro)...
    UNION est implémenté dans MySQL depuis la version 4.0.0. Les tutos en question doivent dater (sur ce point en tout cas) d'avant la version 4.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  6. #6
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    attention, UNION te laisse les doublons s'il y en a dans chacun des résultats que tu regroupes, si tu veux que les doublons soient supprimées il faut utiliser UNION ALL
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  7. #7
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Citation Envoyé par scheu Voir le message
    attention, UNION te laisse les doublons s'il y en a dans chacun des résultats que tu regroupes, si tu veux que les doublons soient supprimées il faut utiliser UNION ALL
    Ben oui, mais là ça a très peu de chance de se produire, ou alors on veut les doublons, vu qu'on tape dans des tables qui correspondent à des objets différents (imprimante, écran, ordinateur). Si ils ont le même id, ça ne veut pas dire que ce sont les mêmes objets. C'est pourquoi je n'ai pas mis le ALL...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  8. #8
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    Citation Envoyé par ced Voir le message
    Ben oui, mais là ça a très peu de chance de se produire, ou alors on veut les doublons, vu qu'on tape dans des tables qui correspondent à des objets différents (imprimante, écran, ordinateur). Si ils ont le même id, ça ne veut pas dire que ce sont les mêmes objets. C'est pourquoi je n'ai pas mis le ALL...

    ced
    Tout à fait

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Citation Envoyé par scheu Voir le message
    attention, UNION te laisse les doublons s'il y en a dans chacun des résultats que tu regroupes, si tu veux que les doublons soient supprimées il faut utiliser UNION ALL
    C'est l'inverse

  10. #10
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    J'ai l'impression aussi car j'ai plus de résultat quand je met UNION ALL que UNION tout cours...

  11. #11
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Et ben voilà, moi aussi je me suis fait prendre . Donc, il faut mettre le ALL...
    Sans le ALL, c'est comme si on faisait un DISTINCT. Mais curieusement, ça ne semble pas prendre en compte la colonne type ajoutée à la mimine dans ma requête, vu que tu as plus de résultats avec le ALL ?

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  12. #12
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    désolé pour cette erreur, c'était pour voir si il y en a qui suivaient
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regrouper les résultats d'un champ dans une requête
    Par Smix007 dans le forum Débuter
    Réponses: 6
    Dernier message: 09/11/2012, 16h46
  2. [2.x] Regrouper les résultats d'une requête suivant un champ
    Par aitiahcene dans le forum Symfony
    Réponses: 9
    Dernier message: 23/07/2012, 14h31
  3. [SQL2005] Regrouper les données de plusieurs bases dans une seule
    Par oliviera63 dans le forum Développement
    Réponses: 7
    Dernier message: 07/02/2012, 10h40
  4. [Lazarus] [Ubuntu] Regrouper les fenêtres de l'EDI dans une seule
    Par Sephiroth Lune dans le forum Lazarus
    Réponses: 0
    Dernier message: 11/07/2008, 14h36
  5. Réponses: 6
    Dernier message: 18/09/2007, 17h10

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