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

Requêtes MySQL Discussion :

Multi-jointures sur une même table et affichage des données


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par défaut Multi-jointures sur une même table et affichage des données
    Bonjour,

    J'ai paramétré une table avec plusieurs codifications allant de H01 à H25.
    Dans ces codifications, je distingue 3 choses : PMR, MOTIF et TYPE_HANDICAP
    Tout est codé dans la même table car je n'ai pas le choix... De ce fait pour une personne donnée, je souhaite pouvoir afficher sur une même ligne :
    - si la personne est PMR ou non
    - le motif du handicap de la personne
    - le type de handicap de la personne

    J'obtiens le résultat suivant :
    0 / AGT_NUM / PMR / MOTIF / TYPE_HANDICAP
    1 / 51946 / (null) / (null) / H25
    2 / 51946 / H15 / (null) / (null)
    3 / 51946 / (null) / H01 / (null)

    Et je souhaite :
    0 / AGT_NUM / PMR / MOTIF / TYPE_HANDICAP
    1 / 51946 / H15 / H01 / H25

    Je vous joins ma requête ci-dessous, j'avoue que je commence à péter un plomb ! ^^
    MERCI DE VOTRE AIDE !



    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    select ag.agt_num,ipmr.par_cod as PMR,imot.par_cod as MOTIF,ityp.par_cod as TYPE_HANDICAP
    from AG_IMMATRICUL IM
     
    left outer join ag_agent AG on ag.agt_id=im.agt_id
    left outer join pa_parametre PA on PA.par_id=im.par_id
     
    left outer join 
    (select i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin from pa_parametre p
    left outer join AG_IMMATRICUL i
    on p.par_id=i.par_id 
    where p.par_cod='H15'
    group by i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin) IPMR
    on IM.PAR_ID=IPMR.PAR_ID 
     
    left outer join 
    (select i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin from pa_parametre p
    left outer join AG_IMMATRICUL i
    on p.par_id=i.par_id 
    where p.par_cod in ('H01','H02','H03','H04','H05','H06','H07','H08','H09')
    group by i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin) IMOT
    on IM.PAR_ID=IMOT.PAR_ID 
     
    left outer join 
    (select i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin from pa_parametre p
    left outer join AG_IMMATRICUL i
    on p.par_id=i.par_id 
    where p.par_cod in ('H20','H21','H22','H23','H24','H25')
    group by i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin) ITYP
    on PA.PAR_ID=ITyp.PAR_ID 
     
    where pa.par_cod like 'H%'
    and (IM.AGI_DAT_FIN>=sysdate or IM.AGI_DAT_FIN is null)
    and (AG.AGT_DAT_DEPART>=sysdate+365 or AG.AGT_DAT_DEPART is null)
     
    group by
    ag.agt_num,ipmr.par_cod ,imot.par_cod ,ityp.par_cod

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Essayer ... une fonction d'agrégation comme max, normalement les valeurs nulles seront ignorées ...
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    select 
    ag.agt_num,
    max(ipmr.par_cod) as PMR,
    max(imot.par_cod) as MOTIF,
    max(ityp.par_cod) as TYPE_HANDICAP
     
    from AG_IMMATRICUL IM
     
    left outer join ag_agent AG on ag.agt_id=im.agt_id
    left outer join pa_parametre PA on PA.par_id=im.par_id
     
    left outer join 
    (select i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin from pa_parametre p
    left outer join AG_IMMATRICUL i
    on p.par_id=i.par_id 
    where p.par_cod='H15'
    group by i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin) IPMR
    on IM.PAR_ID=IPMR.PAR_ID 
     
    left outer join 
    (select i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin from pa_parametre p
    left outer join AG_IMMATRICUL i
    on p.par_id=i.par_id 
    where p.par_cod in ('H01','H02','H03','H04','H05','H06','H07','H08','H09')
    group by i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin) IMOT
    on IM.PAR_ID=IMOT.PAR_ID 
     
    left outer join 
    (select i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin from pa_parametre p
    left outer join AG_IMMATRICUL i
    on p.par_id=i.par_id 
    where p.par_cod in ('H20','H21','H22','H23','H24','H25')
    group by i.par_id,p.par_cod,i.agi_dat_debut,i.agi_dat_fin) ITYP
    on PA.PAR_ID=ITyp.PAR_ID 
     
    where pa.par_cod like 'H%'
    and (IM.AGI_DAT_FIN>=sysdate or IM.AGI_DAT_FIN is null)
    and (AG.AGT_DAT_DEPART>=sysdate+365 or AG.AGT_DAT_DEPART is null)
     
    group by
    ag.agt_num

Discussions similaires

  1. Jointure sur une même table
    Par franquis dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/04/2010, 11h49
  2. Auto-jointure sur une même table
    Par West01 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/10/2008, 15h46
  3. [1.x] Jointure sur une même table
    Par tyx dans le forum Symfony
    Réponses: 1
    Dernier message: 04/08/2008, 11h19
  4. Auto jointure (sur une même table)
    Par freestyler dans le forum Langage SQL
    Réponses: 16
    Dernier message: 20/05/2008, 15h16
  5. jointure sur une même table
    Par guillaumeVb6 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/09/2004, 15h08

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