SQL : problème Group By
Alexander Laurent
-
dcanl Messages postés 3036 Statut Contributeur -
dcanl Messages postés 3036 Statut Contributeur -
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
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:
- SQL : problème Group By
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix ✓ - Forum MySQL
- Sql lister les tables ✓ - Forum Programmation
- Récupération serveur sql - Télécharger - Gestion de données
- Migration base access vers sql server - Télécharger - Gestion de données
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 #.
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.
@+
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.
@+
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
Bye
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
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
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;
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;
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.
@+
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.
@+