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 :

Select sur plusieurs tables : Probleme de regroupement de champs sur une meme ligne


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut Select sur plusieurs tables : Probleme de regroupement de champs sur une meme ligne
    Bonjour, et désolé pour le titre mais j'ai pas trouvé plus explicite

    J'ai un petit souci avec un select recalcitrant sur 5 tables,
    Je tourne sous MySQL.

    Pour simplifier, je vais reduire mon probleme a deux tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Table1 : id, nom, prenom
    Table2 : id, type
    Je fais mon select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM table1 t1, table2 t2
    WHERE t1.id = t2.id
    Cela me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ID| nom  |prenom | type  |
    1 | toto |  toto | alpha |
    1 | toto |  toto | beta  |
    1 | toto |  toto | gamma |
    Mon probleme vient du fait que je voudrai recuperer une sorti comme celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ID| nom  |prenom | type01 | type02 | type03
    1 | toto |  toto | alpha  |  beta  | gamma
    J'aurai voulu savoir si cella été possible, et si c'était le cas, comment faire parce que la je seche un peu ^^"

    Merci d'avance

  2. #2
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Ca, c'est de la présentation : Ce n'est pas à SQL de faire la présentation, il n'est pas fait pour ça : C'est à ton application cliente de prendre les données et de formater l'ensemble.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Donc a part regrouper les types dans une colonne, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    | type  |
     
    | alpha |
    | gamma |
    | beta  |
    ce n'est pas possible, c'est bien ca ?
    il n'existerai pas donc aucune maniere de "concaténer" plusieurs colonnes différentes

    tant pis, je me debrouilerai avec mes multiples rows ^^

    Merci bien

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 403
    Points
    28 403
    Par défaut
    Il s'agit là de cosmétique, qui n'est pas le but du langage SQL.
    C'est à l'application de se charger de la mise en forme des données.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    puisque tu travailles sous MySQL, tu as accès à la fonction d'agrégat GROUP_CONCAT, qui te permet de regrouper dans une même colonne les valeurs de tes différentes lignes.

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ID| nom  |prenom | types
    1 | toto |  toto | alpha, beta, gamma
    Le descriptif de la fonction GROUP_ CONCAT sur mysql.com

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Ah, la frontière du cosmétique...

    Sérieusement, je ne suis pas certain qu'on puisse cloisonner ce genre de demande à de l'esthétique.
    A mon sens, dans beaucoup de cas, il s'agit au fond d'un problème de nature et modélisation de l'information.

    Par exemple, tu pourrais dire :
    un individu porte comme caractéristiques son sexe, sa date de naissance, ...

    Dans ce cas là, tu peux avoir :
    Table individu (id, sexe, date naissance, ..)
    Ou alors
    Table individu (id)
    +
    Table propriétés (id, type prop, valeur prop)

    Dans le second cas, il peut paraître naturel, et pas si superficiel, de vouloir reconstruire son individu...

    Mais bon, je ne remettrais pas en cause les lois des grands gourous du SQL. Non je n'oserais pas !

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Merci pour vos coups de main ^^
    J'ai abandonner l'idée, ca paraissé deja pas tres net des le debut
    j'suis pas completement sur que ca soit de la cosmétique non plus mais comem dit plus haut la limite n'est pas super clair et dans mon cas, je l'ai peut etre franchie

    Pour le reste, bah en fait je n'ai pas decider de la composition de mes tables, wordpress la fait pour moi, et leur nouvelle configuration des catégories et autres tags n'est pas des plus simple a recupérer

    Je chercher juste a récuperer une liste de posts en fonction d'une catégorie Et d'un tag

    Je continue sur un autre chemin, je finirai bien par y arriver ^^

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 403
    Points
    28 403
    Par défaut
    La limite du SQL, c'est que tu dois connaitre le nombre de colonnes que tu veux extraire.
    Dans un cas comme le tien, ce nombre de colonnes est variable, voire non limité. Sinon il y a toujours des artifices pour faire ce type de requête... à condition de savoir combien de colonnes afficher et comment les identifier.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Bah on en apprend tout les jours
    J'avais dépassé la ligne ^^"

    Merci pour les infos

Discussions similaires

  1. Recuperer les valeurs d'un meme champ sur plusieurs tables
    Par ant0inep dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/05/2010, 20h18
  2. Réponses: 9
    Dernier message: 09/05/2009, 17h34
  3. Réponses: 1
    Dernier message: 25/04/2009, 11h31
  4. select multiple sur plusieurs tables
    Par syl2095 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/12/2004, 15h48
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

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