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

PHP & Base de données Discussion :

Requête particulière => passage de liste en colonnes


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut Requête particulière => passage de liste en colonnes
    Bonjour,

    J'ai une modélisation un peu particulière qui permet de stocker des listes d'attributs. L'idée est de pouvoir gérer des attributs qui sont spécifiques.

    Ainsi, je possède une table "t_attribut_specifique" qui liste ces attributs spécifiques.

    Une table tj_obs_taxon_a_attribut" permet de lier ces attributs spécifiques à une valeur.

    Contenu de la table "t_attribut_specifique" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id;nom de l'attribut
    1;"oha_descriprif"
    2;"oha_surface"
    3;"oha_phyto"

    Contenu de la table tj_obs_taxon_a_attribut" :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id;fk;valeur
    212615;1;"Conservatoire Botanique National de Franche-Comté"
    212615;2;"2320"
    212615;2;"25001"
    la question est donc la suivante : Comment faire une requête me permettant de lister les attributs avec leurs valeurs afin de ressortir par exemple :

    oha_descriprif |oha_surface
    valeur|valeur

    En espérant avoir été clair, je remercie aux personnes qui essaieront de m'aider dans ce problème.

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Question: C'est quoi l'id dans la table tj_obs_taxon_a_attribut ?
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    un id auto-incrémentale

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Citation Envoyé par heretik25 Voir le message
    un id auto-incrémentale
    Qui s'incrémente pas alors
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Effectivement, petit malentendu, il s'agit d'une FK qui sert de PK dans cette table. Mais dans ma problématique, cela n'a aucune influence.

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Admettons que c un id auto, pour l'affichage telle que:

    oha_descriprif |oha_surface
    valeur|valeur
    Donc j'imagine en tableau, tu va avoir des cases vides !!! Et puis l'attribut oha_phyto, il est où ?

    Pour l'instant je comprends:
    oha_descriprif |oha_surface |oha_phyto
    Conservatoire Botanique National de Franche-Comté|2320| |
    Conservatoire Botanique National de Franche-Comté|25001 |
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  7. #7
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    la question est donc la suivante : Comment faire une requête me permettant de lister les attributs avec leurs valeurs afin de ressortir par exemple :

    oha_descriprif |oha_surface
    valeur|valeur
    Pour la requête, tu fais une jointure entre les deux qui te donnera pour chaque attribut les valeurs ... tu peux ajouter un GROUP BY si il y a une liaison entre le descriptif et la surface par exemple ...
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    oha_descriprif |oha_surface |oha_phyto
    Conservatoire Botanique National de Franche-Comté|2320| |
    Conservatoire Botanique National de Franche-Comté|25001 |
    Ca, c'est donc le résultat attendu.

    L'attribut oha_phyto provient de la liste d'attribut. Il y en a des dizaines d'autres.

    On a donc d'un côté une liste d'attribut et de l'autre des entrées qui utilisent implicitement ces attributs en utilisant une liaison de jointure. l'idée est donc de pouvoir remettre tout ça sous forme de tableau.

  9. #9
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    En fait, d'après ce que je comprends c'est que tous les attributs sont liés alors !!!

    De plus si il y a une cinquantaine d'attributs liés, là ça être dur pour l'affichage !!!

    Mais je pense, que tu as la bonne vision de ce que tu veux et moi j'ai pas tout compris ... faudrait que tu me détaille plus sur le rendu, merci
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    J'ai effectivement beaucoup d'attributs spécifiques. Je veux être en mesure de lister par exemple trois de ces attributs. Ces valeurs et attributs sont rattachés à une observation qui se situe dans une autre table.

    Disons l'attribut toto,titi et loulou.

    J'ai donc une table contenant le nom de ces attributs

    -table 1 : Liste d'attributs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id|nom
    1|toto
    2|titi
    3|loulou
    La seconde table est une suite d'entrée utilisant n fois les attributs de la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id|id_liste|valeur
    1|1|valeur
    2|1|valeur
    3|2|valeur
    Ce que je cherche à faire c'est une requête qui permet de recomposer un tableau à partir des attributs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    toto|titi|
    valeur|valeur|
    valeur|valeur|
    valeur|valeur|
    En espérant avoir été plus clair.

  11. #11
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Je pense que j'ai tout compris ( mais tu vois tu aurais du détailler tout de suite cette histoire d'observation )

    Ces valeurs et attributs sont rattachés à une observation qui se situe dans une autre table.
    Et donc pour une observation tu as une liste d'attributs avec une liste de valeur Ok ?
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Et donc pour une observation tu as une liste d'attributs avec une liste de valeur Ok ?
    Pour résumer :

    Une observation possède 0 ou n attributs spécifiques
    Chaque attribut spécifique rattaché à l'observation possède une valeur

  13. #13
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Et tu es obligé d'avoir tes attributs en colonnes (car en ligne avec un GROUP BY sur chaque observation est plus facile) ?

    Sinon bein il faudra que tu passes par une matrice intermédiaire lors de la lecture de la requête (sur jointure des 2 tables) puis une lecture de la matrice pour l'affichage.
    Mais comme le nbr d'attributs est variable, il faudra préalablement calculer en fonction de la largeur d'affichage et le nbr d'attributs une valeur de largeur colonne ...
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Oui, j'ai besoin de reformer un tableau.

    Ce que je voudrais c'est être en mesure de produire la requête. Avec du SQL peut-on arriver à ce dont j'ai besoin ?

    Merci par avance.

  15. #15
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Pour ma part, non, faudra passer par la matrice que je t'avais expliqué ci dessous. Parceque tu ne pourras jamais faire une requête qui devrait faire un enregistrement donnant la première valeur de tous les attributs, puis l'enregistrement suivant la deuxième valeur de tous les attributs, puis ect ...

    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  16. #16
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    La requête doit être en mesure de récupérer les attributs (et leurs valeurs) d'une observation.


    Ex :Observation 1

    Champs de l'observation (j'appelle ça les champs communs)

    id|truc|machin
    1|a|154

    + champs spécifiques

    toto|titi|loulou
    cd|154|yo

    résultat :

    id|truc|machin|id|truc|machin
    1|a|154|1|a|154



    Sachant que forcément, l'observation et les données spécifiques sont liés par des clés.

    Toujours pas possible ? Un autre avis ?

  17. #17
    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
    Je n'ai pas vraiment compris ce que tu cherches à faire ni la structure des tables nécessaires mais j'ai l'impression, après une ecture certes un peu rapide de cette discussion, que tu cherches à faire en SQL ce qui est du ressort du programme applicatif : de la cosmétique (présentation de données).
    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 !

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Bonjour Cinephil,

    Je ne cherche pas à faire de la cosmétique mais à récupérer mes "petits". dans une requête SQL.

    J'ai d'un côté une table d'observation d'espèces. Dans cette table, j'ai des champs communs à toutes les espèces. Les autres champs sont stockées dans une table qui fait office de liste de champs.

    Dans une autre table, j'effectue les liaisons entre les observations et les champs listés et leurs valeurs.

    Ainsi, je veux donc récupérer mon observation avec les champs communs ainsi que tous les champs non communs de cette observation et leurs valeurs.

    je peux donner le MCD, le MPDou la structure SQL des tables incriminées au besoin. Merci de votre aide.

  19. #19
    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
    je peux donner le MCD, le MPDou la structure SQL des tables incriminées au besoin.
    Tu aurais même dû commencer par ça ! C'est beaucoup plus facile pour notre compréhension.

    Et le petit jeu de données qui va bien, en évitant les X, Y, truc, machin qui redonnent du flou plutôt qiue de la lumière !
    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 !

  20. #20
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    voilà pour le mcd et le mpd
    Images attachées Images attachées   

Discussions similaires

  1. Liste des colonnes d'une requête
    Par romuald07 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 05/08/2008, 17h24
  2. Critère de requête avec une zone de liste dans un formulaire
    Par Dehez dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2006, 12h49
  3. [Tableaux] Réoganiser liste en colonne et ancre
    Par Lomik dans le forum Langage
    Réponses: 9
    Dernier message: 26/10/2005, 11h06
  4. liste de colonnes
    Par shadowmoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2005, 17h01
  5. Réponses: 3
    Dernier message: 25/04/2005, 15h26

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