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

WinDev Discussion :

Problème avec une sous requête [WD14]


Sujet :

WinDev

  1. #1
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 970
    Points : 766
    Points
    766
    Par défaut Problème avec une sous requête
    Bonsoir à Tous,

    J'ai un souci avec une sous requête, et à force de tenter, je crains ne plus être capable de voir mon erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT LEFT(VENTE_DATE,5), 
    (SELECT SUM(m2.VENTE_CA) FROM VENTES_DETAIL m2 WHERE  m1.VENTE_DATE=m2.VENTE_DATE AND RIGHT(VENTE_DATE,7)='04/2010') AS '2010', 
    (SELECT SUM(m2.VENTE_CA) FROM VENTES_DETAIL m2 WHERE  m1.VENTE_DATE=m2.VENTE_DATE AND RIGHT(VENTE_DATE,7)='04/2009') AS '2009' 
    FROM VENTES_DETAIL m1
    GROUP BY VENTE_DATE
    ORDER BY VENTE_DATE ASC
    Format des dates : JJ/MM/AAAA
    '04/2010' et '04/2009' sont déclarées en variable

    Je cherche à afficher les sommes des deux années comparées sur la même ligne, or ici, cela m'affiche 2 lignes.
    Je pensais qu'en affichant que la partie droite de la date (exemple: "01/04", "02/04"...), cela me permettrais d'afficher sur une même ligne le résultat des deux années.
    Sachant que je compare bien deux dates identiques et non des jours.

    Par avance, mille merci pour votre aide afin de me guider vers mon erreur

    Bonsoir

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 347
    Points : 3 868
    Points
    3 868
    Par défaut
    Salut à toi,

    A mon avis, le problème vient de :
    qui regroupe sur '01/04/2009' et '01/04/2010' entre autres.

    Tu devrais mettre le LEFT dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY LEFT(VENTE_DATE,5)

  3. #3
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 970
    Points : 766
    Points
    766
    Par défaut
    Bonjour lo²,

    En fait, cela ne change pas le résultat.
    Je crois avoir détecté pourquoi, mais pas comment résoudre le problème.

    1-De fait, le fait d'extraire par LEFT(VENTE_DATE,5) me donne le résultat : 01/04
    2- Mais cela n'empêche (du moins je crois!!) que ce n'est que la partie d'une date entière soit : 01/04/2010
    3- Du cout, cela me parait logique que deux montant de périodes différentes ne puissent s'aligner ensemble.

    Je sais, cela ne règle et ne solutionne rien, mais au moins je fais du surplace.

    Si vous avez une idée....
    Très bonne journée

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 347
    Points : 3 868
    Points
    3 868
    Par défaut
    C'est étrange, je viens de me créer une table sur SQLServer avec une colonne 'date' et une colonne 'ca' avec 2 lignes pour '01/04/2009' et 3 lignes '01/04/20104 et je n'ai qu'une seule ligne.

    J'ai utilisé cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT left(col_date,5), 
    (SELECT SUM(COL_CA) FROM table_1 where RIGHT(col_DATE,7)='04/2009') AS '2009', 
    (SELECT SUM(col_ca) FROM table_1 where RIGHT(col_DATE,7)='04/2010') AS '2010'
    FROM table_1 as m1
    GROUP BY left(col_date,5)
    ORDER BY left(col_date,5) ASC
    A noter que les jointures entre m1-m2 et m1-m3 sont inutiles.

  5. #5
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 970
    Points : 766
    Points
    766
    Par défaut
    Re Bonjour,

    Et bien, après différentes recherches, je pense être parvenu au résultat souhaité.

    Pour répondre à Lo²:

    Que je profite de remercier pour les test effectués de son coté ainsi que de son aide.....
    Votre requête fonctionne, mais le fait de n'avoir aucune liaison implique un résultat erroné en termes de chiffres.

    Pour la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT SEM_JOUR,LEFT(VENTE_DATE,5), 
    (SELECT SUM(m2.VENTE_CA) FROM VENTES_DETAIL m2 
    WHERE  m1.VENTE_DATE=m2.VENTE_DATE AND RIGHT(VENTE_DATE,7)='04/2010') AS '2010', 
    (SELECT SUM(m2.VENTE_CA) FROM VENTES_DETAIL m2 
    WHERE  m1.VENTE_DATE=m2.VENTE_DATE AND RIGHT(VENTE_DATE,7)='04/2009') AS '2009' 
    FROM VENTES_DETAIL m1,SEMAINES 
    WHERE SEM_DATE1=VENTE_DATE 
    GROUP BY VENTE_DATE ,SEM_JOUR 
    ORDER BY LEFT(VENTE_DATE,5) ASC
    Mais vu que la requête retourne un résultat par jour et ne peut pas tenir compte du fait que je lui demande que la partie gauche, cela implique d'avoir deux lignes:
    - Une pour l'année en cours
    - Une autre pour N-1

    J'ai donc appliqué un filtre après l'exécution de la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    K est un entier
    POUR K = TableOccurrence(TABLE_VENTES_MAG) A 1 PAS -1
    	SI TABLE_VENTES_MAG.COL_DATE[K]=TABLE_VENTES_MAG.COL_DATE[K+1] ALORS
    		TABLE_VENTES_MAG.COL_CA[K]=TABLE_VENTES_MAG.COL_CA[K+1]
    		// Supprimer la ligne en cours
    		TableSupprime(TABLE_VENTES_MAG,K+1)
    	FIN
    FIN
    Et là cela fonctionne.
    J'ai bien entendu pris le temps de contrôler les données N et N-1 avant et après filtre.

    J'espère que cela pourra aider certains.

    Bonne après midi
    Et encore merci à Lo²

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/04/2008, 10h59
  2. Problème avec une sous classe de Graphics2D
    Par Virgile le chat dans le forum 2D
    Réponses: 1
    Dernier message: 16/06/2007, 03h59
  3. [POO] Problème avec une classe + requêtes sql
    Par mithrendil dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 09h27
  4. Ordonner avec une sous requête ,possible ou pas?
    Par worm1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/02/2007, 07h23
  5. Update avec une sous requête
    Par Deejoh dans le forum Installation
    Réponses: 7
    Dernier message: 25/01/2006, 12h50

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