SQL

gwen1

New Member
bonjour a tous,

Je vois dans les sujets des années précédentes, des questions sur le modèle relationnel à rédiger en SQL.

Je ne comprend rien à ce qu'il faut faire, est ce que c'est encore au programme de cette année?, si oui pouvez vous m'aider à comprendre.

Merci à tous :biggrin:
 

protoss

Member
Tiens une question:

Quantité total de pièces utilisées pour les matériels en cours de révision pendant le mois de Septembre 200N et classement chronologique.

_Schéma relationnel:
REVISION(Numficherev, DateDébutRev, Date FinRévision, HeuresRévision, #RéfMatériel)
UTILISER(#RéfPièce + #NumFicheRévision, Qtepièce)

_Mon SQL
SELECT DateDévutRev, SUM(QtePièce) AS QteSept
FROM UTILISER, REVISION
WHERE NumFicheRev.REVISION=NumFicheRev.UTILISER
AND DateDebut=#01/09/200N#
AND DateFin=#30/09/200N#
Order By DateDébutRevision

_La correction :
SELECT DateDévutRev, SUM(QtePièce) AS QteSept
FROM UTILISER, REVISION
WHERE NumFicheRev.REVISION=NumFicheRev.UTILISER
GROUP BY DateDebutRev
HAVING(DateDebutRev) >=#01/09/200N# AND DateDebutRev<=#30/09/200N#)
ORDER BY DateDebutRev

Peut on dire que le ma requête soit bonne??
 

vestale974

Well-Known Member
Salut,
Lorsqu'on emploie en SQL, les fonctions telles que SUM(), AVG(), MIN(), etc, on doit impérativement utiliser dans la syntaxe de la requête les fonctions de regroupement COUNT, GROUP BY et HANVING.
De plus, d'où tirez-vous DateDebut et DateFin?
Certe votre proposition amènerait à produire le bon résultat, mais sans la bonne la bonne syntaxe.
Des 2 expressions, c'est la correction qu'il faut prendre en considération
@+
 

protoss

Member
Merci beaucoup pour ton aide :aplause:
Est ce qu'on peut dire que si on utilise la fonction SUM() on utilise obligatoirement la fonction HAVING()? où est ce au cas par cas?
 

vestale974

Well-Known Member
Bonjour,
Dès que vous utilisez SUM() AVG() MAX() MIN() et qu'il y a un critère soit sur votre alias, soit sur un champ compris dans SELECT, vous devez impérativement utiliser HAVING pour mentionner le critère.
@+
 

protoss

Member
vestale974 link=topic=23957.msg221324#msg221324 date=1147090741 a dit:
De plus, d'où tirez-vous DateDebut et DateFin?
Certe votre proposition amènerait à produire le bon résultat, mais sans la bonne la bonne syntaxe.
Des 2 expressions, c'est la correction qu'il faut prendre en considération
@+

DatedébutRev et DateFinRev appartiennent à l'entité REVISION

Ok merci beaucoup :dacc:
 

vestale974

Well-Known Member
Re,
De plus, dans la syntaxe de votre critère, il y a une erreur grossière. Tu utilises le signe =, alors qu'il faudrait utiliser les symboles de comparaison.
AND DateDebut=#01/09/200N#
AND DateFin=#30/09/200N#
...
AND DateDebut>=#01/09/200N#
AND DateFin<=#30/09/200N#
 

Ca peut vous intéresser