Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/04/2011, 14h03   #1
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 49
Points : 37
Points : 37
Par défaut Erreur dans le code SQL de la requête

Bonjour,

Après un sacré bout de temps passer à la regarder danstout les sens je ne vois pas ce qui cloche c'est pourquoi je fais appel à votre savoir.

J'utilise cette requete sur une base de données HFS/C (Windev 15 ) c'est la raison pour laquelle vous verrez des instruction en WL.XXXX ( ces fonctions fonctionne et sont bien placé (testé à part) )

Le but de cette requete : récupérer les infos des commandes passé il y a entre 14 et 18 jours et trouver dans une autre table la VA s'approchant le plus possible du poids de ma pièce !!


la requete en elle meme :
Code :
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
 
 
SELECT 
RecuperationCommandeEnCours.Demande_client_reference AS Demande_client_reference,	
RecuperationCommandeEnCours.Numero_de_dossier AS Numero_de_dossier,	
RecuperationCommandeEnCours.Produit_commande_numero AS Produit_commande_numero,	
RecuperationCommandeEnCours.Quantite_commandee -RecuperationCommandeEnCours.Quantite_totale_prise_en_compte AS PièceNonPEC,	
RecuperationCommandeEnCours.Date_de_creation_du_dossier AS Date_de_creation_du_dossier,	
WL.DateDifférence( WL.ChaîneVersDate(RecuperationCommandeEnCours.Date_de_creation_du_dossier), WL.DateDuJour()) AS TestEcartdate,	
OutilDevisImportBCL.PoidsPiece AS PoidsPiece,	
MIN(PrixVAMAT.VA) AS VA
FROM 
PrixVAMAT,	
OutilDevisImportBCL,	
RecuperationCommandeEnCours
WHERE 
RecuperationCommandeEnCours.Produit_commande_numero	=	OutilDevisImportBCL.NumeroProduit
AND
(
OutilDevisImportBCL.PoidsPiece <= VA	
AND	RecuperationCommandeEnCours.Quantite_commandee -RecuperationCommandeEnCours.Quantite_totale_prise_en_compte <> 0
AND	 WL.DateDifférence( WL.ChaîneVersDate(RecuperationCommandeEnCours.Date_de_creation_du_dossier), WL.DateDuJour()) BETWEEN 14 AND 18
)
GROUP BY 
VA
 
HAVING
MIN(VA)
Merci d'avance pour votre aide
FreeDo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 14h13   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 081
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 081
Points : 1 875
Points : 1 875
Bonjour,
Je vois (au moins) 2 erreurs:
1.Tu cherches le min(va), et tu regroupes par VA. Le group by doit porter sur les colonnes qui ne font pas l'objet d'une fonction d'aggregation
2. Il doit manquer la fin de la requête : having min(va)... il doit y avoir une condition.

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 14h16   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
HAVING MIN(VA) n'a pzs de sens...

1) Il faut un prédicat pour le HAVING. Exemple :
2) Le GROUP BY est stupide, les sous ensembles doivent porter sur tout ce qui n'est pas groupé :
Code :
1
2
3
4
5
6
7
8
GROUP BY RecuperationCommandeEnCours.Demande_client_reference,
RecuperationCommandeEnCours.Numero_de_dossier,
RecuperationCommandeEnCours.Produit_commande_numero,
RecuperationCommandeEnCours.Quantite_commandee -R ecuperationCommandeEnCours.Quantite_totale_prise_en_compte,
RecuperationCommandeEnCours.Date_de_creation_du_dossier,
WL.DateDifférence( WL.ChaîneVersDate(RecuperationCommandeEnCours.Date_de_creation_du_dossier), 
WL.DateDuJour()),
OutilDevisImportBCL.PoidsPiece AS PoidsPiece
3) vous gagnerz en lisibilité à utiliser des alias pour vos tables

Bref, apprenez SQL. Mon livre comme mon site web peuvent vous y aider !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 14h41   #4
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 49
Points : 37
Points : 37
Merci beaucoup pour vos lumière il est vrai qu il me faut vraiment remettre la tete dans le memento

A+ et au plaisir de reprendre une leçon !
FreeDo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h01.


 
 
 
 
Partenaires

Hébergement Web