SQL : problème Group By

Fermé
Alexander Laurent - 18 sept. 2007 à 15:06
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 - 19 sept. 2007 à 18:08
Bonjour à tous,

je sèche severement depuis quelques heures, voila je tente d'effectuer une requête à partir de SQL viewer, je me suis loggé sur une base de donnée. et voici la requete qui pause problème :

Je ne vous fournirai pas d"explication dans un 1er temps, les jointures existent et ne posent pas de problème, c'est plutôt la syntaxe qui doit poser problème :

1) SELECT NO_TICKET, NO_ARTICLE, LIBELLE, PRIX_TTC, (TICKET_DETAIL.PRIX_TTC/ARTI_STOCK.PV_TTC) AS POIDS
2) FROM ARTICLE JOIN TICKET_DETAIL ON ARTICLE.NO_ARTICLE = TICKET_DETAIL.NO_ARTICLE
3) JOIN ARTI_STOCK ON ARTI_STOCK.NO_ARTICLE = ARTICLE.NO_ARTICLE
4) WHERE DATE_VENTE BETWEEN '2007-09-10' AND '2007-09-10'
5) GROUP BY NO_ARTICLE HAVING SUM (TICKET_DETAIL.PRIX_TTC/ARTI_STOCK.PV_TTC)AS POIDS ;

Si je retire la ligne 5, la requête fonctionne, si je retire la ligne 5 et que j'ajoute un distinct sur la 1er ligne (Select Distinct No-ticket) la requête ne fonctionne pas.


Merci de m'éclairer sur ce problème
Cordialement Alexander Laurent
A voir également:

6 réponses

Précise déja dans ton SELECT NO_TICKET etc ... les tables des quelles tu extrait les champs ==> SELECT NomTable.NO_TICKET a mon avis il doit avoir une confusions a ce niveau. De plus de quel type est ton champs DATE_VENTE car si il est en type date, et que je me souvien bien, ce n'est pas encadré de simple cote mais de #.
0
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
18 sept. 2007 à 15:30
Salut.

Je suis d'accord avec Djekill : précise dans quelle table le champ doit être sélectionné. Par contre, pour #, je pense qu'il voulait mettre " (double quote).

Ensuite, concernant ta dernière ligne, enlève l'espace après SUM.

Pour le DISTINCT, étant donné que la sélection concerne plusieurs tables, essaie avec DISTINCTROW.

@+
0
Les champs date c'est sur que c'est des #, apres s'il a définie sont champs comme un texte dans sa table alors il ne peu faire de BETWEEN faudrait plus de précision a ce sujet

Bye
0
Alexander Laurent
19 sept. 2007 à 10:09
Tout d'abord, je vous remercie pour vos réponses.
Concernant la date, il n'y a pas de soucis en utilisant les simples guillements ( ' ) et la requête génére une erreur lorsque j'utilise des #. Ce qui est étrange c'est qu'il s'agit bien d'un champ "Date".
J'ai essayé le DISTINCTROW et j'ai 'ajouté les noms des tables dans mon SELECT, j'ai aussi retirer l'espace entre le SUM et le calcul mais rien à faire. C'est vraiment le GROUP BY qui pose problème et le DISTINCT après le SELECT.

Si vous avez d'autres propositions à me faire parvenir, je vous remercie par avance.
Cordialement
Alexander Laurent
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Moi perso j'aurai essayé ca :

1) SELECT NO_TICKET, NO_ARTICLE, LIBELLE, PRIX_TTC, (TICKET_DETAIL.PRIX_TTC/ARTI_STOCK.PV_TTC) AS POIDS
2) FROM ARTICLE JOIN TICKET_DETAIL ON ARTICLE.NO_ARTICLE = TICKET_DETAIL.NO_ARTICLE
3) JOIN ARTI_STOCK ON ARTI_STOCK.NO_ARTICLE = ARTICLE.NO_ARTICLE
4) WHERE DATE_VENTE BETWEEN '2007-09-10' AND '2007-09-10'
5) GROUP BY NO_TICKET, NO_ARTICLE, LIBELLE, PRIX_TTC;
0
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
19 sept. 2007 à 18:08
En y regardant de plus près...

GROUP BY NO_ARTICLE HAVING SUM(TICKET_DETAIL.PRIX_TTC/ARTI_STOCK.PV_TTC) AS POIDS n'est pas valide.

Tu n'as pas de condition pour ton having. Tu ne donnes que la somme sans l'utiliser.

GROUP BY NO_ARTICLE HAVING SUM(TICKET_DETAIL.PRIX_TTC/ARTI_STOCK.PV_TTC) AS POIDS > 1500 serait mieux (il y a une condition).

Et puis, je ne suis pas certain qu'il faille redire SUM(TICKET_DETAIL.PRIX_TTC/ARTI_STOCK.PV_TTC) AS POIDS étant donné que tu as déjà dans le select (TICKET_DETAIL.PRIX_TTC/ARTI_STOCK.PV_TTC) AS POIDS...

Essaie GROUP BY NO_ARTICLE HAVING SUM(POIDS) > 1500

Essaie aussi ce que te dis paftek.

Ce n'est peut-être pas ça qui règlera ton problème, mais ces suggestions méritent d'être testées.

@+
0