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. #21
    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
    Et bien il suffit de faire une jointure externe de T_observation_taxon vers les deux autres tables :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT -- les colonnes nécessaires et pas étoile
    FROM T_observation_taxon t
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    	LEFT OUTER JOIN T_attribut_specifique_lot_donnees d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot
    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 !

  2. #22
    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,

    J'ai essayé la requête proposée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ota_date_debut,lpo_y_l93,lpo_x_l93
    FROM T_observation_taxon t
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot
    Erreur retournée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     la colonne « lpo_y_l93 » n'existe pas
    Sachant que ce champs est récupéré à partir de la liste d'attributs contenu dans la table "T_attribut_specifique_lot_donnees". Qu'en pensez-vous ?

    Merci.

  3. #23
    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 structure de tes tables.
    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 !

  4. #24
    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 voilà

    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
    23
    24
    CREATE TABLE t_observation_taxon
    (
      ota_id_obs_taxon serial NOT NULL,
      iva_id_validation integer,
      ldo_id_lot_donnees integer NOT NULL,
      tao_id_taxon integer NOT NULL,
      ota_commentaire_observation text,
      ota_observateurs character varying(255),
      ota_organismes character varying(255),
      ota_restriction boolean,
      ota_date_debut character varying(8),
      ota_date_fin character varying(8),
      ota_id_observation_base_mere character varying(255) NOT NULL,
      CONSTRAINT c_pk_ota PRIMARY KEY (ota_id_obs_taxon),
      CONSTRAINT c_fk_iva_ota FOREIGN KEY (iva_id_validation)
          REFERENCES t_indice_validation (iva_id_validation) MATCH SIMPLE
          ON UPDATE RESTRICT ON DELETE RESTRICT,
      CONSTRAINT c_fk_ldo_ota FOREIGN KEY (ldo_id_lot_donnees)
          REFERENCES t_lot_donnees (ldo_id_lot_donnees) MATCH SIMPLE
          ON UPDATE RESTRICT ON DELETE RESTRICT
    )
    WITH (
      OIDS=FALSE
    );
    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
    CREATE TABLE tj_obs_taxon_a_attribut
    (
      ota_id_obs_taxon integer NOT NULL,
      asl_id_attribut_lot integer NOT NULL,
      tat_valeur_attribut text,
      CONSTRAINT c_pk_tat PRIMARY KEY (ota_id_obs_taxon, asl_id_attribut_lot),
      CONSTRAINT c_fk_asl_tat FOREIGN KEY (asl_id_attribut_lot)
          REFERENCES t_attribut_specifique_lot (asl_id_attribut_lot) MATCH SIMPLE
          ON UPDATE RESTRICT ON DELETE RESTRICT,
      CONSTRAINT c_fk_ota_tat FOREIGN KEY (ota_id_obs_taxon)
          REFERENCES t_observation_taxon (ota_id_obs_taxon) MATCH SIMPLE
          ON UPDATE RESTRICT ON DELETE RESTRICT
    )
    WITH (
      OIDS=FALSE
    );

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE t_attribut_specifique_lot
    (
      asl_id_attribut_lot serial NOT NULL,
      ldo_id_lot_donnees integer NOT NULL,
      asl_nom_attribut_lot character varying(255),
      CONSTRAINT c_pk_asl PRIMARY KEY (asl_id_attribut_lot),
      CONSTRAINT c_fk_ldo_asl FOREIGN KEY (ldo_id_lot_donnees)
          REFERENCES t_lot_donnees (ldo_id_lot_donnees) MATCH SIMPLE
          ON UPDATE RESTRICT ON DELETE RESTRICT
    )
    WITH (
      OIDS=FALSE
    );

  5. #25
    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 manque la table "T_attribut_specifique_lot_donnees" qui est censée contenir la colonne "lpo_y_l93" !
    Cette colonne existe t-elle ?
    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 !

  6. #26
    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
    Pardon, elle a juste été renommée en "t_attribut_specifique_lot"

    La colonne "lpo_y_l93" n'existe pas en tant que telle. La table "t_attribut_specifique_lot" permet de créer une liste de champs qui ne sont pas communs aux observations.

    Ainsi, la table t_attribut_specifique_lot est remplie de cette manière (et c'est ici que se trouve lpo_y_l93) :

    1;1;"oha_descriprif"
    2;1;"oha_surface"
    3;1;"oha_phyto"
    4;1;"oha_atteinte"
    5;1;"oha_pourcentage"
    6;1;"oha_interet_n2000"
    13;2;"cbnfc_obs_lot"
    14;2;"cbnfc_obs_code_sig"
    15;2;"cbnfc_insee"
    16;2;"cbnfc_obs_lieu_dit"
    17;2;"cbnfc_obs_ref_biblio"
    18;2;"cbnfc_obs_source"
    21;3;"opie_effectif_male"
    22;3;"opie_dept"
    ...

    L'idée étant d'être en mesure de récupérer les champs communs de l'observation mais aussi les champs non communs qui sont stockés en liste. La valeur de ces champs non communs est stockée dans la table. "tj_obs_taxon_a_attribut"

    En espérant avoir éclairé un peu la difficulté, merci de donner de votre temps pour m'aider dans cette requête sur laquelle je bloque.

  7. #27
    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
    Ainsi, la table t_attribut_specifique_lot est remplie de cette manière (et c'est ici que se trouve lpo_y_l93) :
    Je ne vois toujours pas "lpo_y_l93" dans ta liste de données !
    C'est l'une des valeurs de la colonne "asl_nom_attribut_lot" ?

    Dans ta requête, tu chercherais à récupérer la valeur de l'attribut ayant pour nom "lpo_y_l93" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT t.ota_date_debut, 
    	j.tat_valeur_attribut AS lpo_y_l93
    FROM T_observation_taxon t
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    	LEFT OUTER JOIN T_attribut_specifique_lot d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot
    WHERE d.asl_nom_attribut_lot = 'lpo_y_l93'
    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 !

  8. #28
    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 comment faire dans ce cas si je souhaite aussi récupérer "lpo_x_l93" en même temps que "lpo_y_l93" ?

  9. #29
    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
    Et bien il faut faire une autre jointure sur la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT t.ota_date_debut, 
    	j.tat_valeur_attribut AS lpo_y_l93,
    	j2.tat_valeur_attribut AS lpo_x_l93
    FROM T_observation_taxon t
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    	LEFT OUTER JOIN T_attribut_specifique_lot d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j2 ON j2.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    	LEFT OUTER JOIN T_attribut_specifique_lot d2 ON d.ASL_ID_attribut_lot = j2.ASL_ID_attribut_lot
    WHERE d.asl_nom_attribut_lot = 'lpo_y_l93'
    	AND d2.asl_nom_attribut_lot = 'lpo_x_l93'
    J'ai actuellement ce genre de truc à faire pour extraire des données venant du logiciel Jira vers une BDD Oracle et j'en suis à 23 jointures sur une table customfieldvalue !
    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 !

  10. #30
    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
    Avec cette méthode, j'ai un souci, la valeur du premier attribut "listé" remonte toujours alors que j'interroge un autre champ listé. Une idée du pourquoi ?

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    606819;"20090904";"6644464";"6644464";"6644464"
    606820;"20081113";"6720340";"6720340";"6720340"
    606821;"20081113";"6679498";"6679498";"6679498"
    606822;"20081208";"6686802";"6686802";"6686802"
    Merci

  11. #31
    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 ne comprends ce que tu exposes. Quelle est ta requête ?
    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 !

  12. #32
    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 :


    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
    SELECT t.ota_id_obs_taxon, t.ota_date_debut, 
    	j.tat_valeur_attribut AS lpo_y_l93,
    	j2.tat_valeur_attribut AS lpo_x_l93,
    	j3.tat_valeur_attribut AS lpo_lieu_dit
     
    FROM T_observation_taxon t
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j2 ON j2.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d2 ON d.ASL_ID_attribut_lot = j2.ASL_ID_attribut_lot
     
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j3 ON j3.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d3 ON d.ASL_ID_attribut_lot = j3.ASL_ID_attribut_lot
     
     
    WHERE d.asl_nom_attribut_lot = 'lpo_y_l93'
    AND d2.asl_nom_attribut_lot = 'lpo_x_l93'
    AND d3.asl_nom_attribut_lot = 'lpo_lieu_dit'
    Quelque soit l'attribut demandé, la valeur est égale à la première valeur du premier champ listé.

  13. #33
    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
    Tu as une petite erreur d'alias dans les jointures.
    Dans la condition de jointure, tu pointais à chaque fois sur d.

    Mea culpa, cette erreur figurait dans ma requête.

    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
    SELECT t.ota_id_obs_taxon, t.ota_date_debut, 
    	j.tat_valeur_attribut AS lpo_y_l93,
    	j2.tat_valeur_attribut AS lpo_x_l93,
    	j3.tat_valeur_attribut AS lpo_lieu_dit
     
    FROM T_observation_taxon t
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    	LEFT OUTER JOIN T_attribut_specifique_lot d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j2 ON j2.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    	LEFT OUTER JOIN T_attribut_specifique_lot d2 ON d2.ASL_ID_attribut_lot = j2.ASL_ID_attribut_lot
     
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j3 ON j3.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    	LEFT OUTER JOIN T_attribut_specifique_lot d3 ON d3.ASL_ID_attribut_lot = j3.ASL_ID_attribut_lot
     
     
    WHERE d.asl_nom_attribut_lot = 'lpo_y_l93'
    AND d2.asl_nom_attribut_lot = 'lpo_x_l93'
    AND d3.asl_nom_attribut_lot = 'lpo_lieu_dit'
    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 !

  14. #34
    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, je n'avais pas fait attention.

    Merci en tout cas, j'ai appris quelque chose aujourd'hui

    Affaire résolue !

  15. #35
    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,

    Je remonte le poste car je re-travaille sur cette requête et il semble qu'elle ne remonte la ligne que si tous les attributs sont remplis. Comment être en mesure de remonter toutes les lignes même si un des attributs ne contient pas d'information ?

    Merci

  16. #36
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 144
    Points
    144
    Par défaut
    Salut,

    Passes tes conditions de filtrages WHERE (qui portent sur les tables des LEFT JOIN) dans les LEFT JOIN sinon forcement tu perd l'intéret des LEFT JOIN ...

    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
    SELECT t.ota_id_obs_taxon, t.ota_date_debut, 
    	j.tat_valeur_attribut AS lpo_y_l93,
    	j2.tat_valeur_attribut AS lpo_x_l93,
    	j3.tat_valeur_attribut AS lpo_lieu_dit
     
    FROM T_observation_taxon t
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j2 ON j2.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d2 ON d.ASL_ID_attribut_lot = j2.ASL_ID_attribut_lot
     
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j3 ON j3.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d3 ON d.ASL_ID_attribut_lot = j3.ASL_ID_attribut_lot
     
     
    WHERE d.asl_nom_attribut_lot = 'lpo_y_l93'
    AND d2.asl_nom_attribut_lot = 'lpo_x_l93'
    AND d3.asl_nom_attribut_lot = 'lpo_lieu_dit'
    deviendra

    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
    SELECT t.ota_id_obs_taxon, t.ota_date_debut, 
    	j.tat_valeur_attribut AS lpo_y_l93,
    	j2.tat_valeur_attribut AS lpo_x_l93,
    	j3.tat_valeur_attribut AS lpo_lieu_dit
     
    FROM T_observation_taxon t
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j ON j.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d ON d.ASL_ID_attribut_lot = j.ASL_ID_attribut_lot AND d.asl_nom_attribut_lot = 'lpo_y_l93'
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j2 ON j2.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d2 ON d.ASL_ID_attribut_lot = j2.ASL_ID_attribut_lot AND d2.asl_nom_attribut_lot = 'lpo_x_l93'
     
     
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut j3 ON j3.OTA_ID_obs_taxon = t.OTA_ID_obs_taxon
    LEFT OUTER JOIN T_attribut_specifique_lot d3 ON d.ASL_ID_attribut_lot = j3.ASL_ID_attribut_lot AND d3.asl_nom_attribut_lot = 'lpo_lieu_dit'

  17. #37
    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
    Merci pour cette proposition mais apparemment, cela ne remonte pas les bonnes données dans les colonnes (mix des données des attributs)

  18. #38
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 144
    Points
    144
    Par défaut
    Dans ta modélisation, est-ce que si l'attribut n'est pas renseigné il possède tout de même une ligne dans TJ_obs_taxon_a_attribut ou est-ce que la ligne n'est même pas présente ?

  19. #39
    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
    Pas de données, pas de ligne dans TJ_obs_taxon_a_attribut

  20. #40
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 144
    Points
    144
    Par défaut
    Du coup, je tenterai un truc comme ça :

    Code sql : 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
    23
    24
    25
    SELECT 
    	tob.ota_id_obs_taxon, 
    	tob.ota_date_debut, 
    	tjotaa1.tat_valeur_attribut AS lpo_y_l93,
    	tjotaa2.tat_valeur_attribut AS lpo_x_l93,
    	tjotaa3.tat_valeur_attribut AS lpo_lieu_dit
    FROM T_observation_taxon tob
    INNER JOIN T_attribut_specifique_lot tasl1 
    	ON tasl1.ldo_id_lot_donnees = tob.ldo_id_lot_donnees 
    	AND tasl1.asl_nom_attribut_lot = 'lpo_y_l93'
    INNER JOIN T_attribut_specifique_lot tasl2 
    	ON tasl2.ldo_id_lot_donnees = tob.ldo_id_lot_donnees
    	AND tasl2.asl_nom_attribut_lot = 'lpo_x_l93'
    INNER JOIN T_attribut_specifique_lot tasl3 
    	ON tasl3.ldo_id_lot_donnees = tob.ldo_id_lot_donnees
    	AND tasl3.asl_nom_attribut_lot = 'lpo_lieu_dit'
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut tjotaa1
    	ON tjotaa1.OTA_ID_obs_taxon = tob.OTA_ID_obs_taxon
    	AND tjotaa1.asl_id_attribut_lot = tasl1.asl_id_attribut_lot
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut tjotaa2
    	ON tjotaa2.OTA_ID_obs_taxon = tob.OTA_ID_obs_taxon
    	AND tjotaa2.asl_id_attribut_lot = tasl2.asl_id_attribut_lot
    LEFT OUTER JOIN TJ_obs_taxon_a_attribut tjotaa3
    	ON tjotaa3.OTA_ID_obs_taxon = tob.OTA_ID_obs_taxon
    	AND tjotaa3.asl_id_attribut_lot = tasl3.asl_id_attribut_lot

    A compté que tes attributs soit bien unique même s'ils sont affectés à plusieurs taxons, ce que laisse supposer ta modélisation.

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