Une requête SQL... simple me direz-vous,
maître/détails... toujours simple (me direz-vous),
avec seulement une ligne de détail... moins simple, n'est-ce pas ?
Ma demande est donc la suivante :
je cherche le SQL pour sélectionner les éléments à partir de deux tables en
relation maitre/detail, et la requête ne doit retourner qu'une seule ligne
de détail. C'est pour un récapitulatif.
Exemple concret : un stock, et des mouvements de stocks.
Pour chaque ligne de stock, renvoyer la ligne de stock et le dernier (et
seulement le dernier) mouvement de stock.
Il y a une date dans la table des mouvements de stocks.
Pour retourner toutes les lignes de stocks et de mouvements de stocks, le
SQL est :
select s.*, d.* from stock s
left join stock_detail d on d.stock_id=s.stock_id
Comment faire evoluer cette requête pour que seule la ligne la plus récente
de stock_detail soit sélectionnée ?
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
Med Bouchenafa
Voici un début de piste
SELECT s.stock_id, Max(d.ColonneDate) FROM stock s INNER JOIN stock_detail d ON d.stock_id=s.stock_id GROUP BY s.stock_id
-- Bien cordialement Med Bouchenafa
"Pierre" a écrit dans le message de news:
Bonjour,
Une requête SQL... simple me direz-vous, maître/détails... toujours simple (me direz-vous), avec seulement une ligne de détail... moins simple, n'est-ce pas ?
Ma demande est donc la suivante : je cherche le SQL pour sélectionner les éléments à partir de deux tables en relation maitre/detail, et la requête ne doit retourner qu'une seule ligne de détail. C'est pour un récapitulatif. Exemple concret : un stock, et des mouvements de stocks. Pour chaque ligne de stock, renvoyer la ligne de stock et le dernier (et seulement le dernier) mouvement de stock. Il y a une date dans la table des mouvements de stocks.
Pour retourner toutes les lignes de stocks et de mouvements de stocks, le SQL est : select s.*, d.* from stock s left join stock_detail d on d.stock_id=s.stock_id
Comment faire evoluer cette requête pour que seule la ligne la plus récente de stock_detail soit sélectionnée ?
Merci d'avance de vos suggestions.
A plus.
Pierre.
Voici un début de piste
SELECT s.stock_id, Max(d.ColonneDate)
FROM stock s INNER JOIN stock_detail d ON d.stock_id=s.stock_id
GROUP BY s.stock_id
--
Bien cordialement
Med Bouchenafa
"Pierre" <pierroozz@freesurf.fr> a écrit dans le message de news:
uV4eZjLGFHA.1396@tk2msftngp13.phx.gbl...
Bonjour,
Une requête SQL... simple me direz-vous,
maître/détails... toujours simple (me direz-vous),
avec seulement une ligne de détail... moins simple, n'est-ce pas ?
Ma demande est donc la suivante :
je cherche le SQL pour sélectionner les éléments à partir de deux tables
en relation maitre/detail, et la requête ne doit retourner qu'une seule
ligne de détail. C'est pour un récapitulatif.
Exemple concret : un stock, et des mouvements de stocks.
Pour chaque ligne de stock, renvoyer la ligne de stock et le dernier (et
seulement le dernier) mouvement de stock.
Il y a une date dans la table des mouvements de stocks.
Pour retourner toutes les lignes de stocks et de mouvements de stocks, le
SQL est :
select s.*, d.* from stock s
left join stock_detail d on d.stock_id=s.stock_id
Comment faire evoluer cette requête pour que seule la ligne la plus
récente de stock_detail soit sélectionnée ?
SELECT s.stock_id, Max(d.ColonneDate) FROM stock s INNER JOIN stock_detail d ON d.stock_id=s.stock_id GROUP BY s.stock_id
-- Bien cordialement Med Bouchenafa
"Pierre" a écrit dans le message de news:
Bonjour,
Une requête SQL... simple me direz-vous, maître/détails... toujours simple (me direz-vous), avec seulement une ligne de détail... moins simple, n'est-ce pas ?
Ma demande est donc la suivante : je cherche le SQL pour sélectionner les éléments à partir de deux tables en relation maitre/detail, et la requête ne doit retourner qu'une seule ligne de détail. C'est pour un récapitulatif. Exemple concret : un stock, et des mouvements de stocks. Pour chaque ligne de stock, renvoyer la ligne de stock et le dernier (et seulement le dernier) mouvement de stock. Il y a une date dans la table des mouvements de stocks.
Pour retourner toutes les lignes de stocks et de mouvements de stocks, le SQL est : select s.*, d.* from stock s left join stock_detail d on d.stock_id=s.stock_id
Comment faire evoluer cette requête pour que seule la ligne la plus récente de stock_detail soit sélectionnée ?