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 :

Problème de jointure et de count


Sujet :

Langage SQL

  1. #21
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bonjour, non, votre union n'a pas fonctionné mais cela dit en bricolant à partir de votre code ma requête fonctionne enfin ! Inutile de vous dire que pour moi vous êtes l'homme de la journée !

    Merci beaucoup

    Eric.

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Ravi de voir que vous avez pu vous en sortir.
    Si vous pouviez nous fournir la requête qui vous donne le resultat voulu, ça pourrait peut être servir à d'autres personnes qui rencontreront le même souci

  3. #23
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bonjour, bien sûr je peux vous taper le code qui fonctionne, le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT T1.NUMERO_SIRET_CABINET,NOMBRE_DOSSIERS,NBVGE
    FROM (SELECT NUMERO_SIRET_CABINET, COUNT(*) AS NOMBRE_DOSSIERS
      FROM DOSSIERS.FIC
      GROUP BY NUMERO_SIRET_CABINET) T1 FULL OUTER JOIN (SELECT f1.NUMERO_SIRET_CABINET,COUNT(DISTINCT f1.ID_DOSSIER) AS NBVGE 
        FROM DOSSIERS.FIC AS f1
        FULL OUTER JOIN DANGEROSITE_DOSSIER.FIC AS f2 ON f1.ID_DOSSIER = f2.ID_DOSSIER 
        WHERE (CODE_DANGEROSITE IN('CA3', 'LS3', 'DI3', 'SP4') AND DEFICIENCE_IMPUTABLE='1')
        AND CODE_GENRE IN('TAGE03', 'TAGE16', 'TAGE30')
        AND CODE_NATURE_EVENEMENT IN('TANE11', 'TANE12')
        AND ((DATE_RAPPORT_1A>='20090608' AND DATE_RAPPORT_1A<='20090614' AND DANGEROSITE_1A='1') OR (DATE_RAPPORT_1A='' AND DATE_RAPPORT_1B>='20090608' AND DATE_RAPPORT_1B<='20090614' AND DANGEROSITE_1B='1'))
      AND REPARABILITE_ECONOMIQUE = '1'
        GROUP BY f1.NUMERO_SIRET_CABINET) T2
    ON T1.NUMERO_SIRET_CABINET = T2.NUMERO_SIRET_CABINET
    ;
    J'obtiens ainsi 3 colonnes : cabinet / nombre de dossiers total / ,ombre de dossiers d'un certain type

    Celà dit, j'ai encore un problème, au tout début du code il y a : FROM DOSSIERS.FIC. Ceci fonctionne mais si je rajoute juste :
    FROM DOSSIERS.FIC
    WHERE DATE_RAPPORT_1A>'20090608' il ne m'affiche plus rien (et pas de message d'erreur...)
    Juste un petit WHERE le fait bugger. Auriez-vous une solution ?

    Eric.

  4. #24
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    quelqu'un a t-il une idée ?

    Si je remplace mon premier : DOSSIERS.FIC par (SELECT * FROM DOSSIERS.FIC) ca fonctionne mais si je mets : DOSSIERS.FIC WHERE... ou (SELECT* FROM DOSSIERS.FIC WHERE...) cela ne fonctionne plus :/

    Eric.

  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
    Tu peux nous donner le texte exact de la requête qui ne fonctionne pas, ainsi que le message d'erreur éventuel ou le symptôme du dysfonctionnement ?
    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 habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bonjour, le texte est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT T1.NUMERO_SIRET_CABINET,NOMBRE_DOSSIERS,NBVGE
    FROM (SELECT NUMERO_SIRET_CABINET, COUNT(*) AS NOMBRE_DOSSIERS
      FROM DOSSIERS.FIC
      GROUP BY NUMERO_SIRET_CABINET) T1 LEFT OUTER JOIN (SELECT f1.NUMERO_SIRET_CABINET,COUNT(DISTINCT f1.ID_DOSSIER) AS NBVGE 
        FROM DOSSIERS.FIC AS f1
        LEFT OUTER JOIN DANGEROSITE_DOSSIER.FIC AS f2 ON f1.ID_DOSSIER = f2.ID_DOSSIER 
        WHERE (CODE_DANGEROSITE IN('CA3', 'LS3', 'DI3', 'SP4') AND DEFICIENCE_IMPUTABLE='1')
        AND CODE_GENRE IN('TAGE03', 'TAGE16', 'TAGE30')
        AND CODE_NATURE_EVENEMENT IN('TANE11', 'TANE12')
        AND ((DATE_RAPPORT_1A>='20090608' AND DATE_RAPPORT_1A<='20090614' AND DANGEROSITE_1A='1') OR (DATE_RAPPORT_1A='' AND DATE_RAPPORT_1B>='20090608' AND DATE_RAPPORT_1B<='20090614' AND DANGEROSITE_1B='1'))
      AND REPARABILITE_ECONOMIQUE = '1'
        GROUP BY f1.NUMERO_SIRET_CABINET) T2
    ON T1.NUMERO_SIRET_CABINET = T2.NUMERO_SIRET_CABINET
    ;
    si je remplace la 3è ligne par FROM DOSSIERS.FIC WHERE.. ca marche pas. Si je remplace par (SELECT * FROM DOSSIERS.FIC) ca marche. Si je remplace par (SELECT * FROM DOSSIERS.FIC WHERE...) ca marche pas.
    Je suis bien embeté car il faudrait que je puisse sélectionner une période de dates :p et une fois le count effectué je peux plus les récupérer donc faut absolument mettre le WHERE à cet endroit...

    Sans préciser cette période de date, la requête n'a plus aucun sens :p

    Eric.

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    S'il ne vous affiche plus rien, c'est peut être simplement qu'aucune ligne ne satisfait la condition.
    Avez vous essayé de voir ce que vous renvoie la requête toute seule?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT NUMERO_SIRET_CABINET, COUNT(*) AS NOMBRE_DOSSIERS
    FROM DOSSIERS.FIC
    WHERE DATE_RAPPORT_1A>'20090608'
    GROUP BY NUMERO_SIRET_CABINET

  8. #28
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Re, oui il donne bien une réponse avec votre morceau de requête :
    400 cabinets, avec chacun entre 10 et 200 dans la valeur du count...
    Je commence à y lacher des nerfs... à cause d'un petit where, plus rien ne fonctionne.... et sans raison !

    Il n'y a pas une histoire de HAVING où on pourrait mettre HAVING DATE>'20090608'... ?
    En rajoutant un COUNT(SVP !!) ca donnerait quelque chose de productif ? :p

  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
    HAVING agit sur le résultat du GROUP BY, pas sur les lignes individuelles.

    HAVING COUNT(*) > 50 pourrait signifier quelque chose.
    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 habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Suis-je donc fichu ? Ca n'a pourtant pas l'air d'un problème si terrible à résoudre si ?
    J'y suis depuis jeudi dernier..... et je ne désire qu'une seule chose c'est réussir à afficher 3 colonnes...











    je vais vomir

  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
    Ce qui est bizarre c'est que T2 est une sous-requête autrement plus complexe que celle que tu veux faire en T1.
    A tout hasard, essaie de mettre un alias sur DOSSIER.FIC dans la sous-requête T1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (
      SELECT d.NUMERO_SIRET_CABINET, COUNT(*) AS NOMBRE_DOSSIERS
      FROM DOSSIERS.FIC d
      WHERE d.DATE_RAPPORT_1A > '20090608'
      GROUP BY d.NUMERO_SIRET_CABINET
    ) T1
    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 habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Désolé mais ca ne fonctionne toujours pas alors que votre morceau de requête seul fonctionne... je ne sais plus comment faire et je sens que tous ceux qui liront mes posts vont laisser tomber devant l'inextricable...

    que faire ? :'(


    Eric.

  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
    Il est vraiment bizarre ton SGBD !
    Je sèche !
    (non il ne pleut pas encore mais ça se couvre ! )

    EDIT :
    Euh... à tout hasard encore, essaie la syntaxe complète de l'alias de table (AS) :
    Et prends l'habitude de répercuter le bon alias sur les noms de colonnes dans toute la requête. On ne sait jamais, ça peut aider le SGBD à éviter les confusions.
    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 éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Je rejoins l'avis de Cinephil, ça donne pas envie de travailler sur Hyperfile.
    Je t'invite à essayer un peu au hasard, même ce qui pourrait sembler tordu.
    Par exemple, remonter la date dans t1, puis filtrer dans la requête principale, peut être que ça lui plaira plus...
    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
     
    SELECT t1.numero_siret_cabinet,
           sum(t1.nombre_dossiers) as nombre_dossiers,
           t2.nbvge
    FROM   (SELECT   f1.numero_siret_cabinet,
                     f1.date_rapport_1a,
                     Count(*) AS nombre_dossiers
            FROM     dossiers.fic f1
            GROUP BY f1.numero_siret_cabinet, f1.date_rapport_1a
           ) t1
    LEFT OUTER JOIN 
         (
          SELECT f1.numero_siret_cabinet,
                 Count(DISTINCT f1.id_dossier) AS nbvge
          FROM dossiers.fic AS f1
          LEFT OUTER JOIN dangerosite_dossier.fic AS f2
               ON f1.id_dossier = f2.id_dossier
          WHERE (code_dangerosite IN ('CA3','LS3','DI3','SP4')
            AND deficience_imputable = '1')
            AND code_genre IN ('TAGE03','TAGE16','TAGE30')
            AND code_nature_evenement IN ('TANE11','TANE12')
            AND (
                 (date_rapport_1a >= '20090608'
                  AND date_rapport_1a <= '20090614'
                  AND dangerosite_1a = '1'
                 )
                OR 
                 (date_rapport_1a = ''
                  AND date_rapport_1b >= '20090608'
                  AND date_rapport_1b <= '20090614'
                  AND dangerosite_1b = '1')
                )
            AND reparabilite_economique = '1'
          GROUP BY f1.numero_siret_cabinet
         ) t2
    ON t1.numero_siret_cabinet = t2.numero_siret_cabinet
    WHERE t1.date_rapport_1a > '20090608'
    GROUP BY t1.numero_siret_cabinet, t2.nbvge;

  15. #35
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Malheureusement non...

    "Echec de l'execution de la requete
    Erreur renvoyée par le serveur **** :
    Erreur dans le code SQL <t2>. Initialisation de la reqête impossible"

    Je vais C.R.A.Q.U.E.R

    Eric.

  16. #36
    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
    C'est trop bizarre cette histoire !
    Je me répète :
    Citation Envoyé par CinePhil Voir le message
    Tu peux nous donner le texte exact de la requête qui ne fonctionne pas, ainsi que le message d'erreur éventuel ou le symptôme du dysfonctionnement ?
    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 !

  17. #37
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Dans l'idéal voilà ce qu'il me faudrait :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT T1.NUMERO_SIRET_CABINET,NOMBRE_DOSSIERS,NBVGE
    FROM (SELECT NUMERO_SIRET_CABINET, COUNT(*) AS NOMBRE_DOSSIERS
      FROM DOSSIERS.FIC
    WHERE ((DATE_RAPPORT_1A>='20090608' AND DATE_RAPPORT_1A<='20090614') OR (DATE_RAPPORT_1A='' AND DATE_RAPPORT_1B>='20090608' AND DATE_RAPPORT_1B<='20090614'))
      GROUP BY NUMERO_SIRET_CABINET) T1 FULL OUTER JOIN (SELECT f1.NUMERO_SIRET_CABINET,COUNT(DISTINCT f1.ID_DOSSIER) AS NBVGE 
        FROM DOSSIERS.FIC AS f1
        FULL OUTER JOIN DANGEROSITE_DOSSIER.FIC AS f2 ON f1.ID_DOSSIER = f2.ID_DOSSIER 
        WHERE (CODE_DANGEROSITE IN('CA3', 'LS3', 'DI3', 'SP4') AND DEFICIENCE_IMPUTABLE='1')
        AND CODE_GENRE IN('TAGE03', 'TAGE16', 'TAGE30')
        AND CODE_NATURE_EVENEMENT IN('TANE11', 'TANE12')
        AND ((DATE_RAPPORT_1A>='20090608' AND DATE_RAPPORT_1A<='20090614' AND DANGEROSITE_1A='1') OR (DATE_RAPPORT_1A='' AND DATE_RAPPORT_1B>='20090608' AND DATE_RAPPORT_1B<='20090614' AND DANGEROSITE_1B='1'))
      AND REPARABILITE_ECONOMIQUE = '1'
        GROUP BY f1.NUMERO_SIRET_CABINET) T2
    ON T1.NUMERO_SIRET_CABINET = T2.NUMERO_SIRET_CABINET
    C'est le fait de mettre un WHERE à la 4è ligne qui fait qu'il ne se passe rien. Ca cherche pendant 15 secondes pi stop. Ca affiche le résultat de l'ancienne requete s'il j'en ai fait une avant (sinon pas de résultat). Pas de message d'erreur. Sans ce WHERE, j'ai la résultat de la requête en 5 secondes.

    Voilà, vous en savez autant que moi !

    Eric.

  18. #38
    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
    Maintenant qu'on a la requête complète...

    1) Est-ce que ce morceau (T1) donne un résultat correct :
    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
    SELECT NUMERO_SIRET_CABINET, COUNT(*) AS NOMBRE_DOSSIERS
      FROM DOSSIERS.FIC
      WHERE (
        (
          DATE_RAPPORT_1A>='20090608' 
          AND DATE_RAPPORT_1A<='20090614'
        ) 
        OR 
        (
          DATE_RAPPORT_1A='' 
          AND DATE_RAPPORT_1B>='20090608' 
          AND DATE_RAPPORT_1B<='20090614'
        )
      )
      GROUP BY NUMERO_SIRET_CABINET
    2) Est-ce qu'il donne un complément d'information par rapport à la partie T2 ?
    C'est à dire, puisqu'on est en FULL OUTER JOIN entre T1 et T2, des lignes supplémentaires à T2.

    3) Est-ce que le résultat de la requête complète sans le WHERE devrait être différent d'avec ? A vérifier d'après le résultat de T1 seul et le résultat de T2 seul.

    Voilà les dernières pistes à analyser qui me viennent à l'esprit.
    A demain avec j'espère de bonnes nouvelles de ta part !
    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 !

  19. #39
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bonjour Cinéphil,
    Je réponds dans l'ordre :

    Oui la partie T1 donne un bon résultat.

    Le FULL OUTER JOIN...
    En fait ce que je veux c une colonne avec les NUMERO_SIRET_CABINET, une avec le nombre de dossiers envoyés (T1), et une avec un certain type de dossiers envoyés, parmi ceux envoyés (T2). Si la valeur de T1 est 300 pour un NMERO_SIRET_CABINET, la valeur de T2 peut être inexistante s'il n'y en a pas. Donc dans T2 il y a un nombre inférieur ou égal de lignes (dans la réalité il y en a forcément moins). Donc ca doit répondre à votre question

    Enfin, oui le résultat sans le WHERE est différent c'est pour cette raison qu'il me faut impérativement pouvoir l'inclure...

    Si jamais vous avez envie de laisser tomber... je peux le comprendre mais je me vois mal expliquer à mon chef que je ne peux pas àcoller 3 colonnes :/ Je suis dessus depuis jeudi dernier.. :'(

    Eric.

  20. #40
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Si la valeur de T1 est 300 pour un NMERO_SIRET_CABINET, la valeur de T2 peut être inexistante s'il n'y en a pas. Donc dans T2 il y a un nombre inférieur ou égal de lignes (dans la réalité il y en a forcément moins).
    Dans ce cas un LEFT OUTER JOIN est suffisant.

    Vous pouvez également reprendre la syntaxe utilisant l'union que je vous avais proposé, et remplacer "UNION ALL" par "UNION".
    Si ça ne fonctionne pas, merci de préciser les symptômes

Discussions similaires

  1. Problème de jointure de tables
    Par AurelBUD dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2005, 16h27
  2. Probléme de jointure
    Par Ajrarn dans le forum Langage SQL
    Réponses: 14
    Dernier message: 24/02/2005, 14h57
  3. Vraisemblable problème de jointure
    Par pimousse76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 15h34
  4. [MS Access] Problème de jointure
    Par Erakis dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2005, 21h15
  5. Problème de jointure ?!
    Par ebaynaud dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/11/2004, 11h27

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