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

SQL Oracle Discussion :

Impossible de faire un UNION ALL sur deux requêtes aux critères différents [11g]


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut Impossible de faire un UNION ALL sur deux requêtes aux critères différents
    Bonjour à tous,

    Voilà je me tourne encore une fois vers vous et vos neurones car depuis plusieurs heures, je creuse je creuse mais ne trouve pas solution à mon problème.

    J'ai une requête initiale qui me retourne pour chaque application, le nombre de cas de test groupé sur l'application et le statut.

    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
    select RCYC_NAME,
           REL_NAME as "Release",
           TC_STATUS,
           count(*)
    FROM   REQ
        FULL JOIN REQ_COVER
             ON REQ.RQ_REQ_ID = REQ_COVER.RC_REQ_ID
        FULL JOIN REQ_RELEASES
             ON REQ_RELEASES.RQRL_REQ_ID =  REQ.RQ_REQ_ID
        FULL JOIN RELEASES
             ON RELEASES.REL_ID =  REQ_RELEASES.RQRL_RELEASE_ID
        FULL JOIN TEST
             ON  TEST.TS_TEST_ID = REQ_COVER.RC_ENTITY_ID
        INNER JOIN TESTCYCL
             ON TESTCYCL.TC_TEST_ID = TEST.TS_TEST_ID
        INNER JOIN RELEASE_CYCLES
             ON TESTCYCL.TC_ASSIGN_RCYC = RELEASE_CYCLES.RCYC_ID
        INNER JOIN CYCLE
             ON CYCLE.CY_CYCLE_ID = TESTCYCL.TC_CYCLE_ID
    WHERE (RCYC_NAME LIKE @Filtre_RELEASE@ escape '\')
        AND RQ_TYPE_ID <> 1
        AND RCYC_PARENT_ID = RELEASES.REL_ID
        AND CY_CYCLE NOT LIKE '%ecevabilit%'
        AND CY_CYCLE NOT LIKE '%onformit%'
        AND CY_CYCLE NOT LIKE '%nstallation%'
        AND ( (@Filtre_Testeur@ = 1)
                AND (TC_ACTUAL_TESTER IN (...) or TC_ACTUAL_TESTER is NULL)
            )
    group by RCYC_NAME, REL_NAME, TC_STATUS
    ORDER BY REL_NAME
    J'obtiens alors ce rendu :

    Nom : resultat_requete_1.JPG
Affichages : 191
Taille : 36,8 Ko

    Mais du coup, pour une même application, j'ai plusieurs lignes.

    Ce que je souhaiterais avoir, c'est pour une même application, avoir trois colonnes "Passed", "Failed", "NoRun" par exemple et avoir le count(*) dans chacun.

    J'ai tenté une approche dans ce genre mais ça ne fonctionne pas :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    select RCYC_NAME,
           REL_NAME as "Release",
           TC_STATUS,
           null as "Failed",
           null as "NoRun",
           count(*) as "Passed"
    FROM   REQ
        FULL JOIN REQ_COVER
             ON REQ.RQ_REQ_ID = REQ_COVER.RC_REQ_ID
        FULL JOIN REQ_RELEASES
             ON REQ_RELEASES.RQRL_REQ_ID =  REQ.RQ_REQ_ID
        FULL JOIN RELEASES
             ON RELEASES.REL_ID =  REQ_RELEASES.RQRL_RELEASE_ID
        FULL JOIN TEST
             ON  TEST.TS_TEST_ID = REQ_COVER.RC_ENTITY_ID
        INNER JOIN TESTCYCL
             ON TESTCYCL.TC_TEST_ID = TEST.TS_TEST_ID
        INNER JOIN RELEASE_CYCLES
             ON TESTCYCL.TC_ASSIGN_RCYC = RELEASE_CYCLES.RCYC_ID
        INNER JOIN CYCLE
             ON CYCLE.CY_CYCLE_ID = TESTCYCL.TC_CYCLE_ID
    WHERE (RCYC_NAME LIKE @Filtre_RELEASE@ escape '\')
        AND RQ_TYPE_ID <> 1
        AND RCYC_PARENT_ID = RELEASES.REL_ID
        AND CY_CYCLE NOT LIKE '%ecevabilit%'
        AND CY_CYCLE NOT LIKE '%onformit%'
        AND CY_CYCLE NOT LIKE '%nstallation%'
        AND ( (@Filtre_Testeur@ = 1)
                AND (TC_ACTUAL_TESTER IN (...) or TC_ACTUAL_TESTER is NULL)
            )
        AND TC_STATUS IN ('Passed','N/A')
    group by RCYC_NAME, REL_NAME, TC_STATUS
    ORDER BY REL_NAME
    
    UNION ALL
    
    select RCYC_NAME,
           REL_NAME as "Release",
           TC_STATUS,
           count(*) as "Failed",
           null as "NoRun",
           null as "Passed"
    FROM   REQ
        FULL JOIN REQ_COVER
             ON REQ.RQ_REQ_ID = REQ_COVER.RC_REQ_ID
        FULL JOIN REQ_RELEASES
             ON REQ_RELEASES.RQRL_REQ_ID =  REQ.RQ_REQ_ID
        FULL JOIN RELEASES
             ON RELEASES.REL_ID =  REQ_RELEASES.RQRL_RELEASE_ID
        FULL JOIN TEST
             ON  TEST.TS_TEST_ID = REQ_COVER.RC_ENTITY_ID
        INNER JOIN TESTCYCL
             ON TESTCYCL.TC_TEST_ID = TEST.TS_TEST_ID
        INNER JOIN RELEASE_CYCLES
             ON TESTCYCL.TC_ASSIGN_RCYC = RELEASE_CYCLES.RCYC_ID
        INNER JOIN CYCLE
             ON CYCLE.CY_CYCLE_ID = TESTCYCL.TC_CYCLE_ID
    WHERE (RCYC_NAME LIKE @Filtre_RELEASE@ escape '\')
        AND RQ_TYPE_ID <> 1
        AND RCYC_PARENT_ID = RELEASES.REL_ID
        AND CY_CYCLE NOT LIKE '%ecevabilit%'
        AND CY_CYCLE NOT LIKE '%onformit%'
        AND CY_CYCLE NOT LIKE '%nstallation%'
        AND ( (@Filtre_Testeur@ = 1)
                AND (TC_ACTUAL_TESTER IN (...) or TC_ACTUAL_TESTER is NULL)
            )
        AND TC_STATUS IN ('Failed')
    group by RCYC_NAME, REL_NAME, TC_STATUS
    ORDER BY REL_NAME
    
    UNION ALL
    
    select RCYC_NAME,
           REL_NAME as "Release",
           TC_STATUS,
           null as "Failed",
           count(*) as "NoRun",
           null as "Passed"
    FROM   REQ
        FULL JOIN REQ_COVER
             ON REQ.RQ_REQ_ID = REQ_COVER.RC_REQ_ID
        FULL JOIN REQ_RELEASES
             ON REQ_RELEASES.RQRL_REQ_ID =  REQ.RQ_REQ_ID
        FULL JOIN RELEASES
             ON RELEASES.REL_ID =  REQ_RELEASES.RQRL_RELEASE_ID
        FULL JOIN TEST
             ON  TEST.TS_TEST_ID = REQ_COVER.RC_ENTITY_ID
        INNER JOIN TESTCYCL
             ON TESTCYCL.TC_TEST_ID = TEST.TS_TEST_ID
        INNER JOIN RELEASE_CYCLES
             ON TESTCYCL.TC_ASSIGN_RCYC = RELEASE_CYCLES.RCYC_ID
        INNER JOIN CYCLE
             ON CYCLE.CY_CYCLE_ID = TESTCYCL.TC_CYCLE_ID
    WHERE (RCYC_NAME LIKE @Filtre_RELEASE@ escape '\')
        AND RQ_TYPE_ID <> 1
        AND RCYC_PARENT_ID = RELEASES.REL_ID
        AND CY_CYCLE NOT LIKE '%ecevabilit%'
        AND CY_CYCLE NOT LIKE '%onformit%'
        AND CY_CYCLE NOT LIKE '%nstallation%'
        AND ( (@Filtre_Testeur@ = 1)
                AND (TC_ACTUAL_TESTER IN (...) or TC_ACTUAL_TESTER is NULL)
            )
        AND TC_STATUS IN ('No Run')
    group by RCYC_NAME, REL_NAME, TC_STATUS
    ORDER BY REL_NAME
    Voilà, j'ai essayé plusieurs formattages mais rien n'y fait...Peut-être auriez-vous des lumières différentes pour m'éclairer.

    J'espère avoir fourni suffisamment d'informations ?

    En tout cas, merci pour votre aide par avance.

    Heremion

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Sans repartir de votre requête, juste pour proposer une idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select appliname, release
         , sum(case when statut = 'Passed' then 1 end) as passed
         , sum(case when statut = 'Failed' then 1 end) as failed
         , sum(case when statut = 'Norun' then 1 end) as norun
      from requete_base
     group by appliname, release

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    GREAT!

    Merci beaucoup pour ton aide!

    Heremion

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

Discussions similaires

  1. [CR 2008] Oui ou non, Je peux faire l'UNION ALL de deux tables de deux BDD différentes
    Par Nour08 dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 16/11/2011, 09h53
  2. Impossible de faire fonctionner un projet sur une autre dique
    Par Baptiste Wicht dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 15/02/2008, 16h55
  3. Réponses: 5
    Dernier message: 05/12/2006, 23h57
  4. Comment faire un Collapse "All" sur un TreeView ?
    Par Le Marin dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/09/2006, 10h39
  5. Réponses: 2
    Dernier message: 12/05/2006, 15h58

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