J'aimerai (en une seule requête, si possible) obtenir pour chaque
commande la dernière ligne de traçabilité saisie.
exemple :
commande n° 002562
traçabilité : 002562 20/11/2006 08:00 B
002562 20/11/2006 15:30 A
Résultat que j'aimerai obtenir :
002562 20/11/2006 15:30 A
Impossible d'utiliser une jointure à cause des agrégations :
SELECT commandes.num_cde, MAX(dateheure) as date, MAX(libelle) as
libelle FROM commandes LEFT JOIN tracabilite GROUP BY commandes.num_cde
me renverrai
002562 20/11/2006 15:30 B
Solution de sous requete (mais impossible)
SELECT commandes.num_commande, (SELECT TOP 1 dateheure, libelle FROM
tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER
BY dateheure DESC) FROM commandes
Seule solution que j'ai trouvée :
SELECT commandes.num_commande, (SELECT TOP 1 dateheure FROM tracabilite
WHERE tracabilite.num_commande=commandes.num_commande ORDER BY
dateheure DESC) as dateheure,(SELECT TOP 1 libelle FROM tracabilite
WHERE tracabilite.num_commande=commandes.num_commande ORDER BY
dateheure DESC) as libelle FROM commandes
Le problème de cette solution c'est que la requete de recherche dans
'tracabilite' va être exécuté X fois en fonction du nombre de champs
que je veux afficher.
Auriez-vous une autre solution
Merci d'avance
PS : désolé pour ce long discours
--
Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
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
Test recherche
Bonjour Je pense que cei devrait fonctionner
Select tracabilite.num_commande, tracabilite.dateheure, tracabilite.libellé From tracabilite Inner Join commande On commande.num_commande = tracabilite.num_commande Inner Join ( Select num_commande As "numsousreq", Max(dateheure) As "dateesousreq" From tracabilite Group By num ) As l_sousreq On l_sousreq.numsousreq = trac.num And l_sousreq.dateesousreq = datee
du moins j'espère Cordialement Stéphane
"Pierre BOUSQUET" a écrit dans le message de news:
Bonjour, J'ai 2 tables : 1. commandes - n° de cde
2. traçabilité - n° de cde - DateHeure - libellé
J'aimerai (en une seule requête, si possible) obtenir pour chaque commande la dernière ligne de traçabilité saisie.
exemple : commande n° 002562 traçabilité : 002562 20/11/2006 08:00 B 002562 20/11/2006 15:30 A
Résultat que j'aimerai obtenir : 002562 20/11/2006 15:30 A
Impossible d'utiliser une jointure à cause des agrégations : SELECT commandes.num_cde, MAX(dateheure) as date, MAX(libelle) as libelle FROM commandes LEFT JOIN tracabilite GROUP BY commandes.num_cde
me renverrai 002562 20/11/2006 15:30 B
Solution de sous requete (mais impossible) SELECT commandes.num_commande, (SELECT TOP 1 dateheure, libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) FROM commandes
Seule solution que j'ai trouvée : SELECT commandes.num_commande, (SELECT TOP 1 dateheure FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as dateheure,(SELECT TOP 1 libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as libelle FROM commandes
Le problème de cette solution c'est que la requete de recherche dans 'tracabilite' va être exécuté X fois en fonction du nombre de champs que je veux afficher.
Auriez-vous une autre solution
Merci d'avance
PS : désolé pour ce long discours
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "
Bonjour
Je pense que cei devrait fonctionner
Select tracabilite.num_commande, tracabilite.dateheure, tracabilite.libellé
From tracabilite
Inner Join commande
On commande.num_commande = tracabilite.num_commande
Inner Join
(
Select num_commande As "numsousreq",
Max(dateheure) As "dateesousreq"
From tracabilite
Group By num
) As l_sousreq
On l_sousreq.numsousreq = trac.num And l_sousreq.dateesousreq = datee
du moins j'espère
Cordialement
Stéphane
"Pierre BOUSQUET" <pb4807@hotmail.com> a écrit dans le message de news:
mn.b3db7d6b9169292b.47088@hotmail.com...
Bonjour, J'ai 2 tables :
1. commandes
- n° de cde
2. traçabilité
- n° de cde
- DateHeure
- libellé
J'aimerai (en une seule requête, si possible) obtenir pour chaque commande
la dernière ligne de traçabilité saisie.
exemple :
commande n° 002562
traçabilité : 002562 20/11/2006 08:00 B
002562 20/11/2006 15:30 A
Résultat que j'aimerai obtenir :
002562 20/11/2006 15:30 A
Impossible d'utiliser une jointure à cause des agrégations :
SELECT commandes.num_cde, MAX(dateheure) as date, MAX(libelle) as libelle
FROM commandes LEFT JOIN tracabilite GROUP BY commandes.num_cde
me renverrai
002562 20/11/2006 15:30 B
Solution de sous requete (mais impossible)
SELECT commandes.num_commande, (SELECT TOP 1 dateheure, libelle FROM
tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY
dateheure DESC) FROM commandes
Seule solution que j'ai trouvée :
SELECT commandes.num_commande, (SELECT TOP 1 dateheure FROM tracabilite
WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure
DESC) as dateheure,(SELECT TOP 1 libelle FROM tracabilite WHERE
tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC)
as libelle FROM commandes
Le problème de cette solution c'est que la requete de recherche dans
'tracabilite' va être exécuté X fois en fonction du nombre de champs que
je veux afficher.
Auriez-vous une autre solution
Merci d'avance
PS : désolé pour ce long discours
--
Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Select tracabilite.num_commande, tracabilite.dateheure, tracabilite.libellé From tracabilite Inner Join commande On commande.num_commande = tracabilite.num_commande Inner Join ( Select num_commande As "numsousreq", Max(dateheure) As "dateesousreq" From tracabilite Group By num ) As l_sousreq On l_sousreq.numsousreq = trac.num And l_sousreq.dateesousreq = datee
du moins j'espère Cordialement Stéphane
"Pierre BOUSQUET" a écrit dans le message de news:
Bonjour, J'ai 2 tables : 1. commandes - n° de cde
2. traçabilité - n° de cde - DateHeure - libellé
J'aimerai (en une seule requête, si possible) obtenir pour chaque commande la dernière ligne de traçabilité saisie.
exemple : commande n° 002562 traçabilité : 002562 20/11/2006 08:00 B 002562 20/11/2006 15:30 A
Résultat que j'aimerai obtenir : 002562 20/11/2006 15:30 A
Impossible d'utiliser une jointure à cause des agrégations : SELECT commandes.num_cde, MAX(dateheure) as date, MAX(libelle) as libelle FROM commandes LEFT JOIN tracabilite GROUP BY commandes.num_cde
me renverrai 002562 20/11/2006 15:30 B
Solution de sous requete (mais impossible) SELECT commandes.num_commande, (SELECT TOP 1 dateheure, libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) FROM commandes
Seule solution que j'ai trouvée : SELECT commandes.num_commande, (SELECT TOP 1 dateheure FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as dateheure,(SELECT TOP 1 libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as libelle FROM commandes
Le problème de cette solution c'est que la requete de recherche dans 'tracabilite' va être exécuté X fois en fonction du nombre de champs que je veux afficher.
Auriez-vous une autre solution
Merci d'avance
PS : désolé pour ce long discours
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "
Pierre BOUSQUET
très bien , merci
Test recherche avait prétendu :
Bonjour Je pense que cei devrait fonctionner
Select tracabilite.num_commande, tracabilite.dateheure, tracabilite.libellé From tracabilite Inner Join commande On commande.num_commande = tracabilite.num_commande Inner Join ( Select num_commande As "numsousreq", Max(dateheure) As "dateesousreq" From tracabilite Group By num ) As l_sousreq On l_sousreq.numsousreq = trac.num And l_sousreq.dateesousreq = datee
du moins j'espère Cordialement Stéphane
"Pierre BOUSQUET" a écrit dans le message de news:
Bonjour, J'ai 2 tables : 1. commandes - n° de cde
2. traçabilité - n° de cde - DateHeure - libellé
J'aimerai (en une seule requête, si possible) obtenir pour chaque commande la dernière ligne de traçabilité saisie.
exemple : commande n° 002562 traçabilité : 002562 20/11/2006 08:00 B 002562 20/11/2006 15:30 A
Résultat que j'aimerai obtenir : 002562 20/11/2006 15:30 A
Impossible d'utiliser une jointure à cause des agrégations : SELECT commandes.num_cde, MAX(dateheure) as date, MAX(libelle) as libelle FROM commandes LEFT JOIN tracabilite GROUP BY commandes.num_cde
me renverrai 002562 20/11/2006 15:30 B
Solution de sous requete (mais impossible) SELECT commandes.num_commande, (SELECT TOP 1 dateheure, libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) FROM commandes
Seule solution que j'ai trouvée : SELECT commandes.num_commande, (SELECT TOP 1 dateheure FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as dateheure,(SELECT TOP 1 libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as libelle FROM commandes
Le problème de cette solution c'est que la requete de recherche dans 'tracabilite' va être exécuté X fois en fonction du nombre de champs que je veux afficher.
Auriez-vous une autre solution
Merci d'avance
PS : désolé pour ce long discours
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "
très bien , merci
Test recherche avait prétendu :
Bonjour
Je pense que cei devrait fonctionner
Select tracabilite.num_commande, tracabilite.dateheure, tracabilite.libellé
From tracabilite
Inner Join commande
On commande.num_commande = tracabilite.num_commande
Inner Join
(
Select num_commande As "numsousreq",
Max(dateheure) As "dateesousreq"
From tracabilite
Group By num
) As l_sousreq
On l_sousreq.numsousreq = trac.num And l_sousreq.dateesousreq = datee
du moins j'espère
Cordialement
Stéphane
"Pierre BOUSQUET" <pb4807@hotmail.com> a écrit dans le message de news:
mn.b3db7d6b9169292b.47088@hotmail.com...
Bonjour, J'ai 2 tables :
1. commandes
- n° de cde
2. traçabilité
- n° de cde
- DateHeure
- libellé
J'aimerai (en une seule requête, si possible) obtenir pour chaque commande
la dernière ligne de traçabilité saisie.
exemple :
commande n° 002562
traçabilité : 002562 20/11/2006 08:00 B
002562 20/11/2006 15:30 A
Résultat que j'aimerai obtenir :
002562 20/11/2006 15:30 A
Impossible d'utiliser une jointure à cause des agrégations :
SELECT commandes.num_cde, MAX(dateheure) as date, MAX(libelle) as libelle
FROM commandes LEFT JOIN tracabilite GROUP BY commandes.num_cde
me renverrai
002562 20/11/2006 15:30 B
Solution de sous requete (mais impossible)
SELECT commandes.num_commande, (SELECT TOP 1 dateheure, libelle FROM
tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY
dateheure DESC) FROM commandes
Seule solution que j'ai trouvée :
SELECT commandes.num_commande, (SELECT TOP 1 dateheure FROM tracabilite
WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure
DESC) as dateheure,(SELECT TOP 1 libelle FROM tracabilite WHERE
tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as
libelle FROM commandes
Le problème de cette solution c'est que la requete de recherche dans
'tracabilite' va être exécuté X fois en fonction du nombre de champs que je
veux afficher.
Auriez-vous une autre solution
Merci d'avance
PS : désolé pour ce long discours
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
--
Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Select tracabilite.num_commande, tracabilite.dateheure, tracabilite.libellé From tracabilite Inner Join commande On commande.num_commande = tracabilite.num_commande Inner Join ( Select num_commande As "numsousreq", Max(dateheure) As "dateesousreq" From tracabilite Group By num ) As l_sousreq On l_sousreq.numsousreq = trac.num And l_sousreq.dateesousreq = datee
du moins j'espère Cordialement Stéphane
"Pierre BOUSQUET" a écrit dans le message de news:
Bonjour, J'ai 2 tables : 1. commandes - n° de cde
2. traçabilité - n° de cde - DateHeure - libellé
J'aimerai (en une seule requête, si possible) obtenir pour chaque commande la dernière ligne de traçabilité saisie.
exemple : commande n° 002562 traçabilité : 002562 20/11/2006 08:00 B 002562 20/11/2006 15:30 A
Résultat que j'aimerai obtenir : 002562 20/11/2006 15:30 A
Impossible d'utiliser une jointure à cause des agrégations : SELECT commandes.num_cde, MAX(dateheure) as date, MAX(libelle) as libelle FROM commandes LEFT JOIN tracabilite GROUP BY commandes.num_cde
me renverrai 002562 20/11/2006 15:30 B
Solution de sous requete (mais impossible) SELECT commandes.num_commande, (SELECT TOP 1 dateheure, libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) FROM commandes
Seule solution que j'ai trouvée : SELECT commandes.num_commande, (SELECT TOP 1 dateheure FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as dateheure,(SELECT TOP 1 libelle FROM tracabilite WHERE tracabilite.num_commande=commandes.num_commande ORDER BY dateheure DESC) as libelle FROM commandes
Le problème de cette solution c'est que la requete de recherche dans 'tracabilite' va être exécuté X fois en fonction du nombre de champs que je veux afficher.
Auriez-vous une autre solution
Merci d'avance
PS : désolé pour ce long discours
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "