j'ai un fichier dans lequel j'enregistre les achats de matieres premieres
que j'effectue tout au long de l'année.
ce fichier est compose des champs suivant :
<date de commande : mois de commande : code : fournisseur : matiere premiere
: prix : quantite.>
je souhaite lister par fournisseurs les matieres premieres dont le prix a
changé avec les quantité commandées sur le prix et le moi du changement de
prix.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
bonjour,
quelques petites remarques :
1) la notion de fichier n'existe pas dans un SGBDR, on parle de TABLE; la notion d'enregistrement n'existe pas dans un SGBDR, on parle de LIGNE; la notion de champs n'existe pas dans un SGBDR, on parle de COLONNE. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2
2) il est dangereux d'utiliser des caractères non normatif dans des noms d'objet. En particulier les espaces sont interdits et ne peuvent que contribuer à te causer des ennuis. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1
3) ton modèle possède des information redondante : "date de commande" et "mois de commande" la date incluant le mois il est dangereux de conserver la colonne "mois de commande". Une simple extraction de ce genre : SELECT date de commande, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, code, fournisseur, matiere premiere, prix, quantite FROM MaTable suffit
4) ta queqtion est trop imprécise car rien n'indique qu'un pris doit avoir un seule chagement au plus. Or s'il y a plusieurs changement de prix pour une même matière d'un même fournisseur sur différents mois, quel mois dois-je afficher ?
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix) ORDER BY 1, 2
5) si tu ne veut que le mois du précédent changement de prix, alors tu peut faire :
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, (SELECT MAX(DATEPART(MONTH, date de commande) FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande) AS MOIS_COMMANDE_PRECEDENTE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande)
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Alva a écrit:
salut à tous,
j'ai un fichier dans lequel j'enregistre les achats de matieres premieres que j'effectue tout au long de l'année. ce fichier est compose des champs suivant : <date de commande : mois de commande : code : fournisseur : matiere premiere : prix : quantite.>
je souhaite lister par fournisseurs les matieres premieres dont le prix a changé avec les quantité commandées sur le prix et le moi du changement de prix.
j'espere que je suis clair....
cordialement
Alva
bonjour,
quelques petites remarques :
1)
la notion de fichier n'existe pas dans un SGBDR, on parle de TABLE;
la notion d'enregistrement n'existe pas dans un SGBDR, on parle de LIGNE;
la notion de champs n'existe pas dans un SGBDR, on parle de COLONNE.
Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2
2)
il est dangereux d'utiliser des caractères non normatif dans des noms d'objet.
En particulier les espaces sont interdits et ne peuvent que contribuer à te
causer des ennuis.
Lire à ce sujet :
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1
3)
ton modèle possède des information redondante :
"date de commande" et "mois de commande" la date incluant le mois il est
dangereux de conserver la colonne "mois de commande". Une simple extraction de
ce genre :
SELECT date de commande, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE,
code, fournisseur, matiere premiere, prix, quantite
FROM MaTable
suffit
4)
ta queqtion est trop imprécise car rien n'indique qu'un pris doit avoir un seule
chagement au plus. Or s'il y a plusieurs changement de prix pour une même
matière d'un même fournisseur sur différents mois, quel mois dois-je afficher ?
SELECT fournisseur, matiere premiere, prix, quantite,
DATEPART(MONTH, date de commande) AS MOIS_COMMANDE
FROM MaTable T
WHERE EXISTS (SELECT *
FROM MaTable
WHERE T.matiere premiere = matiere premiere
AND T.fournisseur = fournisseur
AND T.prix <> prix)
ORDER BY 1, 2
5) si tu ne veut que le mois du précédent changement de prix, alors tu peut faire :
SELECT fournisseur, matiere premiere, prix, quantite,
DATEPART(MONTH, date de commande) AS MOIS_COMMANDE,
(SELECT MAX(DATEPART(MONTH, date de commande)
FROM MaTable
WHERE T.matiere premiere = matiere premiere
AND T.fournisseur = fournisseur
AND T.prix <> prix
AND T.date de commande > date de commande)
AS MOIS_COMMANDE_PRECEDENTE
FROM MaTable T
WHERE EXISTS (SELECT *
FROM MaTable
WHERE T.matiere premiere = matiere premiere
AND T.fournisseur = fournisseur
AND T.prix <> prix
AND T.date de commande > date de commande)
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Alva a écrit:
salut à tous,
j'ai un fichier dans lequel j'enregistre les achats de matieres premieres
que j'effectue tout au long de l'année.
ce fichier est compose des champs suivant :
<date de commande : mois de commande : code : fournisseur : matiere premiere
: prix : quantite.>
je souhaite lister par fournisseurs les matieres premieres dont le prix a
changé avec les quantité commandées sur le prix et le moi du changement de
prix.
1) la notion de fichier n'existe pas dans un SGBDR, on parle de TABLE; la notion d'enregistrement n'existe pas dans un SGBDR, on parle de LIGNE; la notion de champs n'existe pas dans un SGBDR, on parle de COLONNE. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2
2) il est dangereux d'utiliser des caractères non normatif dans des noms d'objet. En particulier les espaces sont interdits et ne peuvent que contribuer à te causer des ennuis. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1
3) ton modèle possède des information redondante : "date de commande" et "mois de commande" la date incluant le mois il est dangereux de conserver la colonne "mois de commande". Une simple extraction de ce genre : SELECT date de commande, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, code, fournisseur, matiere premiere, prix, quantite FROM MaTable suffit
4) ta queqtion est trop imprécise car rien n'indique qu'un pris doit avoir un seule chagement au plus. Or s'il y a plusieurs changement de prix pour une même matière d'un même fournisseur sur différents mois, quel mois dois-je afficher ?
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix) ORDER BY 1, 2
5) si tu ne veut que le mois du précédent changement de prix, alors tu peut faire :
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, (SELECT MAX(DATEPART(MONTH, date de commande) FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande) AS MOIS_COMMANDE_PRECEDENTE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande)
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Alva a écrit:
salut à tous,
j'ai un fichier dans lequel j'enregistre les achats de matieres premieres que j'effectue tout au long de l'année. ce fichier est compose des champs suivant : <date de commande : mois de commande : code : fournisseur : matiere premiere : prix : quantite.>
je souhaite lister par fournisseurs les matieres premieres dont le prix a changé avec les quantité commandées sur le prix et le moi du changement de prix.
j'espere que je suis clair....
cordialement
Alva
Med Bouchenafa
Tu ne trouves pas que c'est un peu trop compliqué pour quelqu'un qui veut un résultat...pourtant pas trop compliqué Le petit SELECT suivant devrait lui donner ce qu'il recherche :
SELECT [Fournisseur], [matiere premiere], [prix], MIN([mois de commande]), SUM([quantite]) FROM NomTable GROUP BY [Fournisseur], [matiere premiere], [prix]
-- Bien cordialement Med Bouchenafa
"Fred BROUARD" a écrit dans le message de news:
bonjour,
quelques petites remarques :
1) la notion de fichier n'existe pas dans un SGBDR, on parle de TABLE; la notion d'enregistrement n'existe pas dans un SGBDR, on parle de LIGNE; la notion de champs n'existe pas dans un SGBDR, on parle de COLONNE. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2
2) il est dangereux d'utiliser des caractères non normatif dans des noms d'objet. En particulier les espaces sont interdits et ne peuvent que contribuer à te causer des ennuis. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1
3) ton modèle possède des information redondante : "date de commande" et "mois de commande" la date incluant le mois il est dangereux de conserver la colonne "mois de commande". Une simple extraction de ce genre : SELECT date de commande, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, code, fournisseur, matiere premiere, prix, quantite FROM MaTable suffit
4) ta queqtion est trop imprécise car rien n'indique qu'un pris doit avoir un seule chagement au plus. Or s'il y a plusieurs changement de prix pour une même matière d'un même fournisseur sur différents mois, quel mois dois-je afficher ?
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix) ORDER BY 1, 2
5) si tu ne veut que le mois du précédent changement de prix, alors tu peut faire :
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, (SELECT MAX(DATEPART(MONTH, date de commande) FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande) AS MOIS_COMMANDE_PRECEDENTE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande)
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Alva a écrit:
salut à tous,
j'ai un fichier dans lequel j'enregistre les achats de matieres premieres que j'effectue tout au long de l'année. ce fichier est compose des champs suivant : <date de commande : mois de commande : code : fournisseur : matiere premiere : prix : quantite.>
je souhaite lister par fournisseurs les matieres premieres dont le prix a changé avec les quantité commandées sur le prix et le moi du changement de prix.
j'espere que je suis clair....
cordialement
Alva
Tu ne trouves pas que c'est un peu trop compliqué pour quelqu'un qui veut un
résultat...pourtant pas trop compliqué
Le petit SELECT suivant devrait lui donner ce qu'il recherche :
SELECT [Fournisseur],
[matiere premiere],
[prix],
MIN([mois de commande]),
SUM([quantite])
FROM NomTable
GROUP BY [Fournisseur],
[matiere premiere],
[prix]
--
Bien cordialement
Med Bouchenafa
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
41F7D6E3.20506@club-internet.fr...
bonjour,
quelques petites remarques :
1)
la notion de fichier n'existe pas dans un SGBDR, on parle de TABLE;
la notion d'enregistrement n'existe pas dans un SGBDR, on parle de LIGNE;
la notion de champs n'existe pas dans un SGBDR, on parle de COLONNE.
Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2
2)
il est dangereux d'utiliser des caractères non normatif dans des noms
d'objet. En particulier les espaces sont interdits et ne peuvent que
contribuer à te causer des ennuis.
Lire à ce sujet :
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1
3)
ton modèle possède des information redondante :
"date de commande" et "mois de commande" la date incluant le mois il est
dangereux de conserver la colonne "mois de commande". Une simple
extraction de ce genre :
SELECT date de commande, DATEPART(MONTH, date de commande) AS
MOIS_COMMANDE,
code, fournisseur, matiere premiere, prix, quantite
FROM MaTable
suffit
4)
ta queqtion est trop imprécise car rien n'indique qu'un pris doit avoir un
seule chagement au plus. Or s'il y a plusieurs changement de prix pour une
même matière d'un même fournisseur sur différents mois, quel mois dois-je
afficher ?
SELECT fournisseur, matiere premiere, prix, quantite,
DATEPART(MONTH, date de commande) AS MOIS_COMMANDE
FROM MaTable T
WHERE EXISTS (SELECT *
FROM MaTable
WHERE T.matiere premiere = matiere premiere
AND T.fournisseur = fournisseur
AND T.prix <> prix)
ORDER BY 1, 2
5) si tu ne veut que le mois du précédent changement de prix, alors tu
peut faire :
SELECT fournisseur, matiere premiere, prix, quantite,
DATEPART(MONTH, date de commande) AS MOIS_COMMANDE,
(SELECT MAX(DATEPART(MONTH, date de commande)
FROM MaTable
WHERE T.matiere premiere = matiere premiere
AND T.fournisseur = fournisseur
AND T.prix <> prix
AND T.date de commande > date de commande)
AS MOIS_COMMANDE_PRECEDENTE
FROM MaTable T
WHERE EXISTS (SELECT *
FROM MaTable
WHERE T.matiere premiere = matiere premiere
AND T.fournisseur = fournisseur
AND T.prix <> prix
AND T.date de commande > date de commande)
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Alva a écrit:
salut à tous,
j'ai un fichier dans lequel j'enregistre les achats de matieres premieres
que j'effectue tout au long de l'année.
ce fichier est compose des champs suivant :
<date de commande : mois de commande : code : fournisseur : matiere
premiere
: prix : quantite.>
je souhaite lister par fournisseurs les matieres premieres dont le prix a
changé avec les quantité commandées sur le prix et le moi du changement
de prix.
Tu ne trouves pas que c'est un peu trop compliqué pour quelqu'un qui veut un résultat...pourtant pas trop compliqué Le petit SELECT suivant devrait lui donner ce qu'il recherche :
SELECT [Fournisseur], [matiere premiere], [prix], MIN([mois de commande]), SUM([quantite]) FROM NomTable GROUP BY [Fournisseur], [matiere premiere], [prix]
-- Bien cordialement Med Bouchenafa
"Fred BROUARD" a écrit dans le message de news:
bonjour,
quelques petites remarques :
1) la notion de fichier n'existe pas dans un SGBDR, on parle de TABLE; la notion d'enregistrement n'existe pas dans un SGBDR, on parle de LIGNE; la notion de champs n'existe pas dans un SGBDR, on parle de COLONNE. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2
2) il est dangereux d'utiliser des caractères non normatif dans des noms d'objet. En particulier les espaces sont interdits et ne peuvent que contribuer à te causer des ennuis. Lire à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1
3) ton modèle possède des information redondante : "date de commande" et "mois de commande" la date incluant le mois il est dangereux de conserver la colonne "mois de commande". Une simple extraction de ce genre : SELECT date de commande, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, code, fournisseur, matiere premiere, prix, quantite FROM MaTable suffit
4) ta queqtion est trop imprécise car rien n'indique qu'un pris doit avoir un seule chagement au plus. Or s'il y a plusieurs changement de prix pour une même matière d'un même fournisseur sur différents mois, quel mois dois-je afficher ?
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix) ORDER BY 1, 2
5) si tu ne veut que le mois du précédent changement de prix, alors tu peut faire :
SELECT fournisseur, matiere premiere, prix, quantite, DATEPART(MONTH, date de commande) AS MOIS_COMMANDE, (SELECT MAX(DATEPART(MONTH, date de commande) FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande) AS MOIS_COMMANDE_PRECEDENTE FROM MaTable T WHERE EXISTS (SELECT * FROM MaTable WHERE T.matiere premiere = matiere premiere AND T.fournisseur = fournisseur AND T.prix <> prix AND T.date de commande > date de commande)
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Alva a écrit:
salut à tous,
j'ai un fichier dans lequel j'enregistre les achats de matieres premieres que j'effectue tout au long de l'année. ce fichier est compose des champs suivant : <date de commande : mois de commande : code : fournisseur : matiere premiere : prix : quantite.>
je souhaite lister par fournisseurs les matieres premieres dont le prix a changé avec les quantité commandées sur le prix et le moi du changement de prix.
j'espere que je suis clair....
cordialement
Alva
Fred BROUARD
et le changement de prix ???
Med Bouchenafa a écrit:
Tu ne trouves pas que c'est un peu trop compliqué pour quelqu'un qui veut un résultat...pourtant pas trop compliqué Le petit SELECT suivant devrait lui donner ce qu'il recherche :
SELECT [Fournisseur], [matiere premiere], [prix], MIN([mois de commande]), SUM([quantite]) FROM NomTable GROUP BY [Fournisseur], [matiere premiere], [prix]
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
et le changement de prix ???
Med Bouchenafa a écrit:
Tu ne trouves pas que c'est un peu trop compliqué pour quelqu'un qui veut un
résultat...pourtant pas trop compliqué
Le petit SELECT suivant devrait lui donner ce qu'il recherche :
SELECT [Fournisseur],
[matiere premiere],
[prix],
MIN([mois de commande]),
SUM([quantite])
FROM NomTable
GROUP BY [Fournisseur],
[matiere premiere],
[prix]
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Tu ne trouves pas que c'est un peu trop compliqué pour quelqu'un qui veut un résultat...pourtant pas trop compliqué Le petit SELECT suivant devrait lui donner ce qu'il recherche :
SELECT [Fournisseur], [matiere premiere], [prix], MIN([mois de commande]), SUM([quantite]) FROM NomTable GROUP BY [Fournisseur], [matiere premiere], [prix]
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************