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 :

Requête SQL imbriquée


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    17
    Points
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 14
    Par défaut Requête SQL imbriquée
    Bonjour à tous,
    Je cherche à faire une requete sql qui me renvoie les informations de la dernier comité d'investissement (attention plusieurs lignes peuvent correspondre à une meme operation). J'ai donc fait un max sur la date d'une requete imbriquée.... Mais j'ai le message d'erreur qui apparait dans windev (contenu dans mon code). il y a don une erreur sur la requete mais je ne la vois pas...Merci pour l'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
    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
    // table de synthese financière des projets
    STDonnéesComptables est une Structure
    	dDate est une Date
    	moTotalLigne est un monétaire
    	sGrouptCompta est une chaîne
    	sGroupBudget est une chaîne
    	sOrigineTable est une chaîne
    	nIdOp est un entier
     
    FIN
    gtabDonnéesComptables est un tableau de STDonnéesComptables
    //creation requete  CI de l'operation
    sMaReq1 est une chaîne = [
    	SELECT 
    		Tmp.IDOperations,
    		Tmp.LibellePoste,
    		Tmp. RegroupmtCompta,
    		Tmp.la_somme_OperationCIMontantBudget
    	FROM (
    			SELECT 
    				Operation_CI.IDOperations AS IDOperations,
    				Operation_CI.OperationCIDateValidationCI AS OperationCIDateValidationCI,		
    				Compta_Type.LibellePoste AS LibellePoste,	
    				Compta_Type.RegroupmtCompta AS RegroupmtCompta,	
    				SUM(Operation_CI.OperationCIMontantBudget) AS la_somme_OperationCIMontantBudget
    			FROM 
    				Compta_Type,	
    				Operation_CI
    			WHERE 
    				Compta_Type.IDCompta_Type = Operation_CI.IDCompta_Type
    			GROUP BY 
    				Operation_CI.IDOperations,
    				Operation_CI.OperationCIDateValidationCI,		
    				Compta_Type.LibellePoste,	
    				Compta_Type.RegroupmtCompta
    			) AS Tmp
    	GROUP BY
    		Tmp.IDOperations,
    	ORDER BY
    		MAX(Tmp.OperationCIDateValidationCI)
     
    ]
    TableauSupprimeTout(gtabDonnéesComptables)
     
     
    Req_CIT_Prev est une Source de Données 
    SI PAS HExécuteRequêteSQL(Req_CIT_Prev, hRequêteDéfaut, sMaReq1) ALORS 
    	Info("Pb dans la requête Structure initiale compta") 
    	RETOUR 
    FIN 
    // Ajoute à la table la requete precedente
    POUR TOUTE Req_CIT_Prev 
    	gstUneDonnée est un STDonnéesComptables
     
     
    	gstUneDonnée.dDate = Req_CIT_Prev.OperationCIDateValidationCI
    	gstUneDonnée.moTotalLigne = Req_CIT_Prev.la_somme_OperationCIMontantBudget
    	gstUneDonnée.sGroupBudget = Req_CIT_Prev.RegroupmtCompta
    	gstUneDonnée.sGrouptCompta = Req_CIT_Prev.LibellePoste
    	//cTCDDONNEESCOMITE est une constante du projet
    	gstUneDonnée.sOrigineTable = cTCDDONNEESCOMITE
     
     
     
    	Ajoute(gtabDonnéesComptables, gstUneDonnée)
     
     
    FIN

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    17
    Points
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 14
    Par défaut Mise à jour
    J'ai modifié ma requete en ajoutant :
    Tmp.OperationCIDateValidationCI, dans le debut de la requete sql

  3. #3
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    85
    Points
    91
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 85
    Points : 91
    Par défaut
    Bonjour,
    Je ne sais pas si c'est la seule erreur mais tu as une virgule après IDOperations:
    Citation Envoyé par phaum Voir le message
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GROUP BY
    Tmp.IDOperations,
    ORDER BY

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 174
    Points
    9 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 174
    Points : 9 670
    Par défaut
    Effectivement , il y a le problème de VIRGULE signalé par JLBRD.

    Mais en dehors de ça, ici tu fais :


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 
    Tmp.IDOperations,
    Tmp.LibellePoste,
    Tmp. RegroupmtCompta,
    Tmp.la_somme_OperationCIMontantBudget
    FROM (
     ... ma requete imbriquée
    ) AS Tmp
    GROUP BY
    Tmp.IDOperations,
    ORDER BY
    MAX(Tmp.OperationCIDateValidationCI)

    Tu as donc une requête avec un GROUP BY ; Dans cette requête, tu n'affiches aucun agrégat ( pas de somme...) , et le seul agrégat que tu utilises, c'est pour l'order-by.


    C'est peut-être correct, tout est possible, mais c'est très suspect.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Points
    2 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 153
    Par défaut
    De plus je ne suis pas sûr que HF permette d'utiliser un champ absent de la clause SELECT pour réaliser un ORDER BY.... (je suis même presque sûr que non).

  6. #6
    Membre actif
    Homme Profil pro
    Ingé Indus
    Inscrit en
    Juillet 2014
    Messages
    107
    Points
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingé Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 107
    Points : 241
    Par défaut
    Qu'elle est le message d'erreur ?
    Erreur(HErreurInfo()) // our un peu plus de détails.


    Citation Envoyé par michel.souris Voir le message
    De plus je ne suis pas sûr que HF permette d'utiliser un champ absent de la clause SELECT pour réaliser un ORDER BY.... (je suis même presque sûr que non).
    Entièrement d'accord.

    Ensuite utilise l'éditeur de requête! Même en mode SQL il t'aiderait a "debbuger" ta requete !
    (il faut juste enregistrer la requête pour que windev l’analyse (syntaxe uniquement))

    Mais tu trouve ainsi facilement beaucoup de problème: la virgule, le tri absent du SELECT ... je te laisse découvrir les autres.


    Dernier point: le ORDER BY Max ...
    L'orde n'est pas spécifier donc il sera croissant... donc sur une rubrique date tes résultats seront classé des plus vieux au plus récent !contraire de ce que tu cherche non?
    donc rajoute DESC.
    D'autre part seule le dernier résultat d'intéresse? Fait un SELECT TOP 1

Discussions similaires

  1. Requêtes SQL imbriquées
    Par zpliz dans le forum SQL
    Réponses: 5
    Dernier message: 25/03/2010, 10h58
  2. [MySQL] Requête sql imbriquée
    Par PIEPLU dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/01/2010, 09h44
  3. Requête SQL imbriqué, 3 tables, plusieurs colonnes
    Par opacho dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/07/2009, 10h45
  4. Requête SQL imbriquée
    Par cecile15 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/05/2009, 11h39
  5. Requête SQL imbriquées
    Par Fanette85 dans le forum ASP.NET
    Réponses: 20
    Dernier message: 05/10/2007, 15h12

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