Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/10/2012, 18h07   #1
matt240490
Invité de passage
 
Inscription : avril 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 2
Points : 0
Points : 0
Par défaut Syntaxe SQL incorrecte

Bonsoir, j'essaye depuis ce matin de faire cette requête SQL via Flamerobin mais j'obtiens toujours le message 'Invalid expression in tghe select list (not contained in either an aggregate function or in the GROUP BY clause)

J'ai tout essayé (requêtes imbriquées, champ un par un, bouger les statements, toujours une erreur).

Merci de m'aider.

Code :
1
2
3
4
5
SELECT '70' AS Journal, TRESOR.TRESOR_TYPE, (iif(extract(day FROM TRESOR.TRESOR_DATE)<10,'0'||(extract(day FROM TRESOR.TRESOR_DATE)),(extract(day FROM TRESOR.TRESOR_DATE)))||
iif(extract(month FROM TRESOR.TRESOR_DATE)<10,'0'||(extract(month FROM TRESOR.TRESOR_DATE)),(extract(month FROM TRESOR.TRESOR_DATE)))
||RIGHT((extract(year FROM TRESOR.TRESOR_DATE)),2)) AS date_, TRESOR.TRESOR_PIECE AS IdFacture, (SELECT CLIENT.CL_NOM AS Client FROM Client RIGHT OUTER JOIN TRESOR ON Client.CL_REF = TRESOR.CL_REF), 
 Sum(TRESOR.TRESOR_CREDIT) AS Debit, (SELECT Sum(FACTURE.FA_HT) FROM FACTURE RIGHT OUTER JOIN TRESOR ON TRESOR.TRESOR_PIECE = FACTURE.FA_REF) 
 FROM TRESOR WHERE TRESOR.TRESOR_PIECE IS NOT NULL GROUP BY TRESOR.TRESOR_DATE, TRESOR.TRESOR_TYPE
matt240490 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2012, 07h30   #2
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 205
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 4 205
Points : 7 260
Points : 7 260
Tout d'abord merci d'utiliser les balises codes , déjà que la requête n'est pas facile à lire ......

Première erreur : JOURNAL et bien d'autres champs uniques ne sont pas dans le GROUP BY

Remarque : Pourquoi vouloir formater la date ?

Ensuite je ne crois pas que les jointures soient bien maitrisées

simplifions déjà en utilisant des alias pour les tables et sans formater la date , d'ailleurs pourquoi la formater ?
Code :
1
2
3
4
5
6
 
SELECT '70' AS Journal, T.TRESOR_TYPE,T.TRESOR_DATE AS Date_,T.TRESOR_PIECE AS IdFacture,C.CL_NOM AS Client,
Sum(T.TRESOR_CREDIT) AS Debit
FROM TRESOR T JOIN CLIENT C ON T.CL_REF = C.CL_REF
WHERE T.TRESOR_PIECE IS NOT NULL
GROUP BY 1,2,3,4,5
reste les factures
on va utiliser une technique différente les CTE (utilisable depuis 2.0 ou 2.1 ?)
Code :
1
2
3
4
5
6
7
8
9
 WITH F AS 
(SELECT FA_REF,Sum(FA_HT) FROM FACTURE GROUP BY 1)
DO  
SELECT '70' AS Journal, T.TRESOR_TYPE,T.TRESOR_DATE AS Date_,T.TRESOR_PIECE AS IdFacture,C.CL_NOM AS Client,
Sum(T.TRESOR_CREDIT) AS Debit,Sum(F.FA_HT)
FROM TRESOR T JOIN CLIENT C ON T.CL_REF = C.CL_REF
                       JOIN F ON T.TRESOR_PIECE=F.FA_REF
WHERE T.TRESOR_PIECE IS NOT NULL
GROUP BY 1,2,3,4,5
N'est ce pas plus 'simple' ?
Je ne suis pas tout a fait sur des jointures cependant , ne connaissant pas les relations entre les différentes tables j'ai pris la jointure par défaut 'classique'
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h24.


 
 
 
 
Partenaires

Hébergement Web