rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

SQL : problème Group By

Posté par Alexander Laurent, le mardi 18 septembre 2007 à 15:06:25
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
Configuration: Windows XP
Internet Explorer 7.0
Répondre à Alexander Laurent  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Djekill, le mardi 18 septembre 2007 à 15:19:48
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 #.
Répondre à Djekill

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dcanl, le mardi 18 septembre 2007 à 15:30:11
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.

@+ Quand la merde tombe du ciel, le malchanceux n'a pas de chapeau.
Répondre à dcanl

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Djekill, le mardi 18 septembre 2007 à 15:33:28
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
Répondre à Djekill

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alexander Laurent, le mercredi 19 septembre 2007 à 10:09:42
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
Répondre à Alexander Laurent

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
paftek, le mercredi 19 septembre 2007 à 16:42:00
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;
Répondre à paftek

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 dcanl, le mercredi 19 septembre 2007 à 18:08:17
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.

@+ Quand la merde tombe du ciel, le malchanceux n'a pas de chapeau.
Répondre à dcanl
Logiciels pertinents trouvés dans les téléchargements
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger Unlocker 1.8.7Unlocker - Unlocker est un outil permettant de forcer la suppression d'un fichier lorsque le système refuse de le faire. Unlocker...Catégorie: Gestion de fichiers
Licence: Freeware/gratuit
Télécharger Visual Basic 6 Runtime (VB6 DLL) 6.0 SP5Visual Basic 6 Runtime (VB6 DLL) - Le Runtime Visual Basic 6 contient l'ensemble des librairies (DLL) nécessaires pour exécuter des programmes écrits en...Catégorie: Librairies (DLL)
Licence: Freeware/gratuit
Télécharger MySQL 5.0.51bMySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Plus de logiciels gratuits sur « SQL : problème Group By »