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 :

Aide sur Requête SQL/ireport


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Aide sur Requête SQL/ireport
    Bonjour, je ne suis pas expert; qq'un pourrait-il m'aider à comprendre..... J'essaie de contourner le fait que Ireport ne gère pas de multiples requêtes dans un rapport. J'ai tenté les sous-rapports mais je n'y arrive pas.
    Voici 2 requêtes qui fonctionnent.
    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
         tbl_workorder.`CODE_WORKORDER` AS tbl_workorder_CODE_WORKORDER,
         tbl_workorder.`WOT11` AS tbl_workorder_WOT11,
         tbl_workorder.`FK_CODE_LABOR_INCHARGE` AS tbl_workorder_FK_CODE_LABOR_INCHARGE,
    COUNT(CODE_WORKORDER) As Nbbt
    FROM
         `tbl_workorder` tbl_workorder
    WHERE
    tbl_workorder.creationdate between $P{DATEDEBUT} and $P{DATEFIN}
    AND tbl_workorder.fk_code_site = $P{SITE} 
    AND tbl_workorder.fk_code_organisation = $P{ORG}
    AND tbl_workorder.`WOT11`='VLS'
    GROUP BY
    tbl_workorder_FK_CODE_LABOR_INCHARGE

    La seconde
    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
         tbl_workorder.`CODE_WORKORDER` AS tbl_workorder_CODE_WORKORDER,
         tbl_workorder.`WOT11` AS tbl_workorder_WOT11,
         tbl_workorder.`FK_CODE_LABOR_INCHARGE` AS tbl_workorder_FK_CODE_LABOR_INCHARGE,
    COUNT(CODE_WORKORDER) As Nbbt
    FROM
         `tbl_workorder` tbl_workorder
    WHERE
    tbl_workorder.creationdate between $P{DATEDEBUT} and $P{DATEFIN}
    AND tbl_workorder.fk_code_site = $P{SITE} 
    AND tbl_workorder.fk_code_organisation = $P{ORG}
    AND (tbl_workorder.`WOT11`='BORNE' OR tbl_workorder.`WOT11`='BORNETTE')
    GROUP BY
    tbl_workorder_FK_CODE_LABOR_INCHARGE

    Quand je tente de le faire en une seule requête, le résultat est faux?

    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
    tbl_workorder.`CODE_WORKORDER` AS tbl_workorder_CODE_WORKORDER,
    tbl_workorder.`WOT11` AS tbl_workorder_WOT11,
    tbl_workorder.`FK_CODE_LABOR_INCHARGE` AS tbl_workorder_FK_CODE_LABOR_INCHARGE,
    (SELECT COUNT(CODE_WORKORDER) FROM `tbl_workorder` tbl_workorder WHERE(tbl_workorder.`WOT11`='BORNE' OR tbl_workorder.`WOT11`='BORNETTE')) As Nbbtmob,
    (SELECT COUNT(CODE_WORKORDER) FROM `tbl_workorder` tbl_workorder WHERE(tbl_workorder.`WOT11`='VLS')) As Nbbtvls
    FROM
         `tbl_workorder` tbl_workorder
    WHERE
     tbl_workorder.creationdate between $P{DATEDEBUT} and $P{DATEFIN}
    AND tbl_workorder.fk_code_site = $P{SITE} 
    AND tbl_workorder.fk_code_organisation = $P{ORG} 
    GROUP BY
    tbl_workorder_FK_CODE_LABOR_INCHARGE
    QUI PEUT M'AIDER ???

    Merci

  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
    Citation Envoyé par FUNSOCKS Voir le message
    QUI PEUT M'AIDER ???
    Merci de ne pas crier...

    Les sous-requêtes scalaires dans le SELECT n'étant pas corrélées, elles ne reprennent donc pas les critères de filtre de la requête principale.
    Pour ce genre de besoin, pas besoin de sous-requête, il suffit de faire un décompte conditionné, ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(case when tbl_workorder.`WOT11`='BORNE' OR tbl_workorder.`WOT11`='BORNETTE' then CODE_WORKORDER end) as Nbbtmob

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup.
    Je ne connaissais pas la fonction;
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    case when (tbl_workorder.`WOT11`='BORNE' OR tbl_workorder.`WOT11`='BORNETTE') then count(tbl_workorder.`CODE_WORKORDER`) end as Nbbtmob,
    	case when tbl_workorder.`WOT11`='VLS' then count(tbl_workorder.`CODE_WORKORDER`)end as Nbbtvls
    il me reste à virer les nulls.

    (Et désolée, je ne pensais pas crier.....)

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

Discussions similaires

  1. Besoin d'aide sur requête Sql
    Par Sekigawa dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 31/12/2009, 15h14
  2. Aide sur requête SQL
    Par Pschittt dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/11/2008, 14h56
  3. Aide sur requête SQL
    Par Mister Paul dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/10/2008, 11h22
  4. aide sur requête sql
    Par Vodkha dans le forum Langage SQL
    Réponses: 9
    Dernier message: 30/08/2005, 17h53
  5. Aide sur Requête SQL
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2005, 12h33

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