Bonjour à tous,
Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le
SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article.
Pour un article donné, je voudrai récupérer la ligne correspondant à la
dernière commande de chaque fournisseur !
J'avoue ne pas savoir comment mettre ça en place.
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
I.G.LOG a pensé très fort :
Bonjour à tous,
Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le
SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article.
Pour un article donné, je voudrai récupérer la ligne correspondant à la
dernière commande de chaque fournisseur !
J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
I.G.LOG
"Roumégou Eric" a écrit dans le message de news:
I.G.LOG a pensé très fort :
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
Bonjour, J'ai du mal m'exprimer ! J'ai besoin de connaître les derniers prix de commande pour un article, et ce pour chaque fournisseur à qui j'ai passé une commande. Si l'article "BALON" a été commandé à "LA DEROUTE", "FNAK", "SPORT 2010", je voudrais avoir le résultat:
BALON - LA DEROUTE - prix 120 BALON - FNAK - prix 130 BALON - SPORT 2010 - prix 135
"order by desc et limit 1" va me retourner seulement la dernière de la dernière commande !!!
encore merci
"Roumégou Eric" <UtilisezleLien@fin.msg> a écrit dans le message de news:
mn.0c0f7d990245c9c8.97767@fin.msg...
I.G.LOG a pensé très fort :
Bonjour à tous,
Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur
le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article.
Pour un article donné, je voudrai récupérer la ligne correspondant à la
dernière commande de chaque fournisseur !
J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
Bonjour,
J'ai du mal m'exprimer !
J'ai besoin de connaître les derniers prix de commande pour un article, et
ce pour chaque fournisseur à qui j'ai passé une commande.
Si l'article "BALON" a été commandé à "LA DEROUTE", "FNAK", "SPORT 2010", je
voudrais avoir le résultat:
BALON - LA DEROUTE - prix 120
BALON - FNAK - prix 130
BALON - SPORT 2010 - prix 135
"order by desc et limit 1" va me retourner seulement la dernière de la
dernière commande !!!
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
Bonjour, J'ai du mal m'exprimer ! J'ai besoin de connaître les derniers prix de commande pour un article, et ce pour chaque fournisseur à qui j'ai passé une commande. Si l'article "BALON" a été commandé à "LA DEROUTE", "FNAK", "SPORT 2010", je voudrais avoir le résultat:
BALON - LA DEROUTE - prix 120 BALON - FNAK - prix 130 BALON - SPORT 2010 - prix 135
"order by desc et limit 1" va me retourner seulement la dernière de la dernière commande !!!
encore merci
free
J'ai pas la solution miracle mais je vois bien truc genre : a) trouver les derniers ventes, genre : select idfournisseur,max(date_commande) from commande group by idfournisseur b) chercher les tarifs correspondant en faisant une jointure ou une subquery entre commande et la requete précédante (et la j'ai pas la syntaxe)
"I.G.LOG" a écrit dans le message de news:4a9d3419$0$23459$
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
J'ai pas la solution miracle mais je vois bien truc genre :
a) trouver les derniers ventes, genre :
select idfournisseur,max(date_commande) from commande group by
idfournisseur
b) chercher les tarifs correspondant
en faisant une jointure ou une subquery entre
commande et la requete précédante
(et la j'ai pas la syntaxe)
"I.G.LOG" <iglog@free.fr> a écrit dans le message de
news:4a9d3419$0$23459$ba4acef3@news.orange.fr...
Bonjour à tous,
Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le
SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article.
Pour un article donné, je voudrai récupérer la ligne correspondant à la
dernière commande de chaque fournisseur !
J'avoue ne pas savoir comment mettre ça en place.
J'ai pas la solution miracle mais je vois bien truc genre : a) trouver les derniers ventes, genre : select idfournisseur,max(date_commande) from commande group by idfournisseur b) chercher les tarifs correspondant en faisant une jointure ou une subquery entre commande et la requete précédante (et la j'ai pas la syntaxe)
"I.G.LOG" a écrit dans le message de news:4a9d3419$0$23459$
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
Roumégou Eric
Dans son message précédent, I.G.LOG a écrit :
"Roumégou Eric" a écrit dans le message de news:
I.G.LOG a pensé très fort :
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
Bonjour, J'ai du mal m'exprimer ! J'ai besoin de connaître les derniers prix de commande pour un article, et ce pour chaque fournisseur à qui j'ai passé une commande. Si l'article "BALON" a été commandé à "LA DEROUTE", "FNAK", "SPORT 2010", je voudrais avoir le résultat:
BALON - LA DEROUTE - prix 120 BALON - FNAK - prix 130 BALON - SPORT 2010 - prix 135
"order by desc et limit 1" va me retourner seulement la dernière de la dernière commande !!!
encore merci
franchement pas la tête à me la casser ce soir ;-) mais je te recopie un fil où j'avais besoin un peu de ce genre de truc (correspondnces de Premier ou Dernier d'accès) donc ça peut te donner une idée ==================================================== Roumégou Eric avait énoncé :
Bonjour, 20mn que je tourne là dessus sans trouver J'ai une table people_vote où je retrouve les enchères par individus A chaque enchère, la personne peux désactiver le suivi relance mails (people_vote=0)
J'ai besoin de retrouver la liste les id des personnes dont la dernière enchère mentionnait pas de suivi (pour les exclure avec un not in)
select ppl_id,coalesce(vot_suivi,1)AS SUIVI,vot_datetime from people_vote where people_vote.vot_groupe='DR30Q1' and GFA_IDd and VOT_TYPE='ENCH' group by ppl_id having SUIVI=0 order by ppl_id,vot_datetime desc
GFA_IDd permet de tester l'enchère particulière. vot_groupe identifie les personnes en lice sur cette enchère.
Mon pb est que le group by agit sur la 1ere ligne et le vot_suivi retourné (et testé en having) correspond à cette 1ere ligne mème si je joue sur le order by.
En fait il me faudrait une fn Dernier (cela existait en Access) mais je ne trouve pas en mysql.
Je vais surement coder à la main mais j'aimerais savoir s'il y a une soluce pure sql.
Merci de vos réponses.
pff !! m'aura donné du fil a retordre celle là ! En fait il faut faire une requete sur une requete
select ppl_id,suivi from( select ppl_id AS PPL_ID,coalesce(vot_suivi,1)AS SUIVI from people_vote where people_vote.vot_groupe='DR30Q1' and GFA_IDd and VOT_TYPE='ENCH' order by ppl_id,vot_datetime desc ) as id group by ppl_id having suivi=0
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
Dans son message précédent, I.G.LOG a écrit :
"Roumégou Eric" <UtilisezleLien@fin.msg> a écrit dans le message de news:
mn.0c0f7d990245c9c8.97767@fin.msg...
I.G.LOG a pensé très fort :
Bonjour à tous,
Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le
SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article.
Pour un article donné, je voudrai récupérer la ligne correspondant à la
dernière commande de chaque fournisseur !
J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
Bonjour,
J'ai du mal m'exprimer !
J'ai besoin de connaître les derniers prix de commande pour un article, et ce
pour chaque fournisseur à qui j'ai passé une commande.
Si l'article "BALON" a été commandé à "LA DEROUTE", "FNAK", "SPORT 2010", je
voudrais avoir le résultat:
BALON - LA DEROUTE - prix 120
BALON - FNAK - prix 130
BALON - SPORT 2010 - prix 135
"order by desc et limit 1" va me retourner seulement la dernière de la
dernière commande !!!
encore merci
franchement pas la tête à me la casser ce soir ;-)
mais je te recopie un fil où j'avais besoin un peu de ce genre de truc
(correspondnces de Premier ou Dernier d'accès)
donc ça peut te donner une idée
==================================================== Roumégou Eric avait énoncé :
Bonjour,
20mn que je tourne là dessus sans trouver
J'ai une table people_vote où je retrouve les enchères par individus
A chaque enchère, la personne peux désactiver le suivi relance mails
(people_vote=0)
J'ai besoin de retrouver la liste les id des personnes dont la dernière
enchère mentionnait pas de suivi (pour les exclure avec un not in)
select ppl_id,coalesce(vot_suivi,1)AS SUIVI,vot_datetime from
people_vote where people_vote.vot_groupe='DR30Q1'
and GFA_IDd and VOT_TYPE='ENCH'
group by ppl_id
having SUIVI=0
order by ppl_id,vot_datetime desc
GFA_IDd permet de tester l'enchère particulière.
vot_groupe identifie les personnes en lice sur cette enchère.
Mon pb est que le group by agit sur la 1ere ligne et le vot_suivi
retourné (et testé en having) correspond à cette 1ere ligne mème si je
joue sur le order by.
En fait il me faudrait une fn Dernier (cela existait en Access) mais je
ne trouve pas en mysql.
Je vais surement coder à la main mais j'aimerais savoir s'il y a une
soluce pure sql.
Merci de vos réponses.
pff !! m'aura donné du fil a retordre celle là !
En fait il faut faire une requete sur une requete
select ppl_id,suivi from(
select ppl_id AS PPL_ID,coalesce(vot_suivi,1)AS SUIVI from people_vote
where people_vote.vot_groupe='DR30Q1'
and GFA_IDd and VOT_TYPE='ENCH'
order by ppl_id,vot_datetime desc
) as id
group by ppl_id
having suivi=0
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
order by desc et limit 1
Bonjour, J'ai du mal m'exprimer ! J'ai besoin de connaître les derniers prix de commande pour un article, et ce pour chaque fournisseur à qui j'ai passé une commande. Si l'article "BALON" a été commandé à "LA DEROUTE", "FNAK", "SPORT 2010", je voudrais avoir le résultat:
BALON - LA DEROUTE - prix 120 BALON - FNAK - prix 130 BALON - SPORT 2010 - prix 135
"order by desc et limit 1" va me retourner seulement la dernière de la dernière commande !!!
encore merci
franchement pas la tête à me la casser ce soir ;-) mais je te recopie un fil où j'avais besoin un peu de ce genre de truc (correspondnces de Premier ou Dernier d'accès) donc ça peut te donner une idée ==================================================== Roumégou Eric avait énoncé :
Bonjour, 20mn que je tourne là dessus sans trouver J'ai une table people_vote où je retrouve les enchères par individus A chaque enchère, la personne peux désactiver le suivi relance mails (people_vote=0)
J'ai besoin de retrouver la liste les id des personnes dont la dernière enchère mentionnait pas de suivi (pour les exclure avec un not in)
select ppl_id,coalesce(vot_suivi,1)AS SUIVI,vot_datetime from people_vote where people_vote.vot_groupe='DR30Q1' and GFA_IDd and VOT_TYPE='ENCH' group by ppl_id having SUIVI=0 order by ppl_id,vot_datetime desc
GFA_IDd permet de tester l'enchère particulière. vot_groupe identifie les personnes en lice sur cette enchère.
Mon pb est que le group by agit sur la 1ere ligne et le vot_suivi retourné (et testé en having) correspond à cette 1ere ligne mème si je joue sur le order by.
En fait il me faudrait une fn Dernier (cela existait en Access) mais je ne trouve pas en mysql.
Je vais surement coder à la main mais j'aimerais savoir s'il y a une soluce pure sql.
Merci de vos réponses.
pff !! m'aura donné du fil a retordre celle là ! En fait il faut faire une requete sur une requete
select ppl_id,suivi from( select ppl_id AS PPL_ID,coalesce(vot_suivi,1)AS SUIVI from people_vote where people_vote.vot_groupe='DR30Q1' and GFA_IDd and VOT_TYPE='ENCH' order by ppl_id,vot_datetime desc ) as id group by ppl_id having suivi=0
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
I.G.LOG
"free" a écrit dans le message de news: 4a9d4b8e$0$741$
J'ai pas la solution miracle mais je vois bien truc genre : a) trouver les derniers ventes, genre : select idfournisseur,max(date_commande) from commande group by idfournisseur b) chercher les tarifs correspondant en faisant une jointure ou une subquery entre commande et la requete précédante (et la j'ai pas la syntaxe)
je cherche avec cette piste à laquelle j'avais pensé intuitivement mais sans pervenir à formaliser. Si je trouve une solution "efficace" je la communique. Merci pour ta réponse
"free" <pat@noplace> a écrit dans le message de news:
4a9d4b8e$0$741$426a74cc@news.free.fr...
J'ai pas la solution miracle mais je vois bien truc genre :
a) trouver les derniers ventes, genre :
select idfournisseur,max(date_commande) from commande group by
idfournisseur
b) chercher les tarifs correspondant
en faisant une jointure ou une subquery entre
commande et la requete précédante
(et la j'ai pas la syntaxe)
je cherche avec cette piste à laquelle j'avais pensé intuitivement mais sans
pervenir à formaliser. Si je trouve une solution "efficace" je la
communique.
Merci pour ta réponse
"free" a écrit dans le message de news: 4a9d4b8e$0$741$
J'ai pas la solution miracle mais je vois bien truc genre : a) trouver les derniers ventes, genre : select idfournisseur,max(date_commande) from commande group by idfournisseur b) chercher les tarifs correspondant en faisant une jointure ou une subquery entre commande et la requete précédante (et la j'ai pas la syntaxe)
je cherche avec cette piste à laquelle j'avais pensé intuitivement mais sans pervenir à formaliser. Si je trouve une solution "efficace" je la communique. Merci pour ta réponse
I.G.LOG
> J'ai besoin de retrouver la liste les id des personnes dont la dernière enchère mentionnait pas de suivi (pour les exclure avec un not in)
ca ressemble à mon problème effectivement !
...
pff !! m'aura donné du fil a retordre celle là ! En fait il faut faire une requete sur une requete
select ppl_id,suivi from( select ppl_id AS PPL_ID,coalesce(vot_suivi,1)AS SUIVI from people_vote where people_vote.vot_groupe='DR30Q1' and GFA_IDd and VOT_TYPE='ENCH' order by ppl_id,vot_datetime desc ) as id group by ppl_id having suivi=0
--
je vais creuser ça ! Merci de ta réponse, si je trouve la solution je te la communique. Bon dev.
> J'ai besoin de retrouver la liste les id des personnes dont la dernière
enchère mentionnait pas de suivi (pour les exclure avec un not in)
ca ressemble à mon problème effectivement !
...
pff !! m'aura donné du fil a retordre celle là !
En fait il faut faire une requete sur une requete
select ppl_id,suivi from(
select ppl_id AS PPL_ID,coalesce(vot_suivi,1)AS SUIVI from people_vote
where people_vote.vot_groupe='DR30Q1'
and GFA_IDd and VOT_TYPE='ENCH'
order by ppl_id,vot_datetime desc
) as id
group by ppl_id
having suivi=0
--
je vais creuser ça !
Merci de ta réponse, si je trouve la solution je te la communique.
Bon dev.
> J'ai besoin de retrouver la liste les id des personnes dont la dernière enchère mentionnait pas de suivi (pour les exclure avec un not in)
ca ressemble à mon problème effectivement !
...
pff !! m'aura donné du fil a retordre celle là ! En fait il faut faire une requete sur une requete
select ppl_id,suivi from( select ppl_id AS PPL_ID,coalesce(vot_suivi,1)AS SUIVI from people_vote where people_vote.vot_groupe='DR30Q1' and GFA_IDd and VOT_TYPE='ENCH' order by ppl_id,vot_datetime desc ) as id group by ppl_id having suivi=0
--
je vais creuser ça ! Merci de ta réponse, si je trouve la solution je te la communique. Bon dev.
Firetox
Bonjour,
il faut une requete qui donne les ligne de commande avec les produit classé par fournisseur,date desc cette requete sera la table qui permettra de faire le selectr avec group by
en fait le group by groupe sur la premiere ligne et enleve les identique ou fait des calcul si il y a des aggregats mais sans aggregats c'est comme si le group by enlevait toutes les lignes suivantes qui sont identique (sur la formule du group by) ex si j'ai
AAAA 209 AAAA 208 BBBBB 208 BBBBB 206
si je fait un select de ca sur le code j'ai AAAA 209 BBBB 208
donc il suffit d'avoir le resultat dans l'odre voulu avant le group by et une sous requete le permet
dans ton cas
SELECT commande.IDFour,ligneCommande.IDproduit,ligneCommande.Prix FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC
cette requete va donner toutes les commandes classée par fournisseur , par produit et par date la derniere commande passée en premier
ensuite on utilise cette requte comme une table
SELECT TMPtable.IDFour,TMPTable.IDProduit,TMPTable.Prix FROM ( SELECT commande.IDFour as IDFour ,ligneCommande.IDproduit as IDProduit ,ligneCommande.Prix as PRIX FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC ) as TMPtable
GROUP BY IDFOUR,IDProduit
voila cela aura pour effet de ne garder qu'une ligne par fournisseur pour un produit et comme la sous requete qui nous sert de table a pour un four, un produit la derniere commande passée en premier le group by fait l'elimination
voila
Bon dev @+
"I.G.LOG" a écrit dans le message de news:4a9d3419$0$23459$
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
Bonjour,
il faut une requete qui donne les ligne de commande avec les produit classé
par fournisseur,date desc
cette requete sera la table qui permettra de faire le selectr avec group by
en fait le group by groupe sur la premiere ligne et enleve les identique ou
fait des calcul si il y a des aggregats mais sans aggregats c'est comme si
le group by enlevait toutes les lignes suivantes qui sont identique (sur la
formule du group by) ex si j'ai
AAAA 209
AAAA 208
BBBBB 208
BBBBB 206
si je fait un select de ca sur le code j'ai
AAAA 209
BBBB 208
donc il suffit d'avoir le resultat dans l'odre voulu avant le group by et
une sous requete le permet
dans ton cas
SELECT commande.IDFour,ligneCommande.IDproduit,ligneCommande.Prix
FROM Commande
LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande
ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC ,
commande.dateCommande DESC
cette requete va donner toutes les commandes classée par fournisseur , par
produit et par date la derniere commande passée en premier
ensuite on utilise cette requte comme une table
SELECT
TMPtable.IDFour,TMPTable.IDProduit,TMPTable.Prix
FROM
(
SELECT commande.IDFour as IDFour ,ligneCommande.IDproduit as IDProduit
,ligneCommande.Prix as PRIX
FROM Commande
LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande
ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC ,
commande.dateCommande DESC
) as TMPtable
GROUP BY IDFOUR,IDProduit
voila cela aura pour effet de ne garder qu'une ligne par fournisseur pour un
produit et comme la sous requete qui nous sert de table a pour un four, un
produit la derniere commande passée en premier le group by fait
l'elimination
voila
Bon dev
@+
"I.G.LOG" <iglog@free.fr> a écrit dans le message de
news:4a9d3419$0$23459$ba4acef3@news.orange.fr...
Bonjour à tous,
Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le
SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article.
Pour un article donné, je voudrai récupérer la ligne correspondant à la
dernière commande de chaque fournisseur !
J'avoue ne pas savoir comment mettre ça en place.
il faut une requete qui donne les ligne de commande avec les produit classé par fournisseur,date desc cette requete sera la table qui permettra de faire le selectr avec group by
en fait le group by groupe sur la premiere ligne et enleve les identique ou fait des calcul si il y a des aggregats mais sans aggregats c'est comme si le group by enlevait toutes les lignes suivantes qui sont identique (sur la formule du group by) ex si j'ai
AAAA 209 AAAA 208 BBBBB 208 BBBBB 206
si je fait un select de ca sur le code j'ai AAAA 209 BBBB 208
donc il suffit d'avoir le resultat dans l'odre voulu avant le group by et une sous requete le permet
dans ton cas
SELECT commande.IDFour,ligneCommande.IDproduit,ligneCommande.Prix FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC
cette requete va donner toutes les commandes classée par fournisseur , par produit et par date la derniere commande passée en premier
ensuite on utilise cette requte comme une table
SELECT TMPtable.IDFour,TMPTable.IDProduit,TMPTable.Prix FROM ( SELECT commande.IDFour as IDFour ,ligneCommande.IDproduit as IDProduit ,ligneCommande.Prix as PRIX FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC ) as TMPtable
GROUP BY IDFOUR,IDProduit
voila cela aura pour effet de ne garder qu'une ligne par fournisseur pour un produit et comme la sous requete qui nous sert de table a pour un four, un produit la derniere commande passée en premier le group by fait l'elimination
voila
Bon dev @+
"I.G.LOG" a écrit dans le message de news:4a9d3419$0$23459$
Bonjour à tous, Je travaille avec MySQL 4.1 et Windev 12 56c ; mais ce problème est sur le SQL:
J'ai trois tables FOURNISSEUR (1,1), COMMANDE (0,n) et LIGNECDE (0,n)
Dans LIGNECDE, j'ai un identifiant article. Pour un article donné, je voudrai récupérer la ligne correspondant à la dernière commande de chaque fournisseur ! J'avoue ne pas savoir comment mettre ça en place.
Merci pour votre aide
I.G.LOG
...
SELECT commande.IDFour,ligneCommande.IDproduit,ligneCommande.Prix FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC
cette requete va donner toutes les commandes classée par fournisseur , par produit et par date la derniere commande passée en premier
ensuite on utilise cette requte comme une table
SELECT TMPtable.IDFour,TMPTable.IDProduit,TMPTable.Prix FROM ( SELECT commande.IDFour as IDFour ,ligneCommande.IDproduit as IDProduit ,ligneCommande.Prix as PRIX FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC ) as TMPtable
GROUP BY IDFOUR,IDProduit
...
Bonjour Firetox,
Oui, ca donne bien ce que je recherche ! Ce concept de GROUP BY est décidemment d'une compréhension peu aisée: dans ce cas, il retourne la première ligne de chaque groupe "IDFOUR,IDPRODUIT" ?! (c'est bien ça, sinon je n'aurais pas le PRIX)... En tous cas la requète fonctionne et retourne bien ce que je cherche. Une nouvelle fois un grand merci !! Phil
...
SELECT commande.IDFour,ligneCommande.IDproduit,ligneCommande.Prix
FROM Commande
LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande
ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC ,
commande.dateCommande DESC
cette requete va donner toutes les commandes classée par fournisseur , par
produit et par date la derniere commande passée en premier
ensuite on utilise cette requte comme une table
SELECT
TMPtable.IDFour,TMPTable.IDProduit,TMPTable.Prix
FROM
(
SELECT commande.IDFour as IDFour ,ligneCommande.IDproduit as IDProduit
,ligneCommande.Prix as PRIX
FROM Commande
LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande
ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC ,
commande.dateCommande DESC
) as TMPtable
GROUP BY IDFOUR,IDProduit
...
Bonjour Firetox,
Oui, ca donne bien ce que je recherche !
Ce concept de GROUP BY est décidemment d'une compréhension peu aisée: dans
ce cas, il retourne la première ligne de chaque groupe "IDFOUR,IDPRODUIT" ?!
(c'est bien ça, sinon je n'aurais pas le PRIX)...
En tous cas la requète fonctionne et retourne bien ce que je cherche.
Une nouvelle fois un grand merci !!
Phil
SELECT commande.IDFour,ligneCommande.IDproduit,ligneCommande.Prix FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC
cette requete va donner toutes les commandes classée par fournisseur , par produit et par date la derniere commande passée en premier
ensuite on utilise cette requte comme une table
SELECT TMPtable.IDFour,TMPTable.IDProduit,TMPTable.Prix FROM ( SELECT commande.IDFour as IDFour ,ligneCommande.IDproduit as IDProduit ,ligneCommande.Prix as PRIX FROM Commande LEFT JOIN ligneCommande ON ligneCommande.IDcommande=commande.IDCommande ORDER By Commande.IDfournisseur ASC ,ligneCommande.IDProduit ASC , commande.dateCommande DESC ) as TMPtable
GROUP BY IDFOUR,IDProduit
...
Bonjour Firetox,
Oui, ca donne bien ce que je recherche ! Ce concept de GROUP BY est décidemment d'une compréhension peu aisée: dans ce cas, il retourne la première ligne de chaque groupe "IDFOUR,IDPRODUIT" ?! (c'est bien ça, sinon je n'aurais pas le PRIX)... En tous cas la requète fonctionne et retourne bien ce que je cherche. Une nouvelle fois un grand merci !! Phil
Jerome PAULIN
Bonjour,
Il me semble que le comportement du GROUP BY utilisé ici est spécifique à MySQL et pourrait bien être différent sur une autre base de données (à prendre en compte dans le cas où tu t'intéresse à autre chose que MySQL)...
GG
Bonjour,
Il me semble que le comportement du GROUP BY utilisé ici est spécifique
à MySQL et pourrait bien être différent sur une autre base de données (à
prendre en compte dans le cas où tu t'intéresse à autre chose que MySQL)...
Il me semble que le comportement du GROUP BY utilisé ici est spécifique à MySQL et pourrait bien être différent sur une autre base de données (à prendre en compte dans le cas où tu t'intéresse à autre chose que MySQL)...
GG
Firetox
Bonjour,
non le group by fonctionne comme cela par contre sous certain SGBD tu ne peux pas faire apparaitre une colonne qui n'est pas dans le group by sans fonction d'aggregat et donc cette requete sous SQLServer ne fonctionnera pas par contre en ajoutant un max sur date tu pourrais avoir la meme chose
Bon dev @+
Firetox
"Jerome PAULIN" a écrit dans le message de news:h7ld59$e84$
Bonjour,
Il me semble que le comportement du GROUP BY utilisé ici est spécifique à MySQL et pourrait bien être différent sur une autre base de données (à prendre en compte dans le cas où tu t'intéresse à autre chose que MySQL)...
GG
Bonjour,
non le group by fonctionne comme cela
par contre sous certain SGBD tu ne peux pas faire apparaitre une colonne qui
n'est pas dans le group by sans fonction d'aggregat et donc cette requete
sous SQLServer ne fonctionnera pas par contre en ajoutant un max sur date tu
pourrais avoir la meme chose
Bon dev
@+
Firetox
"Jerome PAULIN" <jerome.paulin@declicsoft.com> a écrit dans le message de
news:h7ld59$e84$1@s1.news.oleane.net...
Bonjour,
Il me semble que le comportement du GROUP BY utilisé ici est spécifique à
MySQL et pourrait bien être différent sur une autre base de données (à
prendre en compte dans le cas où tu t'intéresse à autre chose que
MySQL)...
non le group by fonctionne comme cela par contre sous certain SGBD tu ne peux pas faire apparaitre une colonne qui n'est pas dans le group by sans fonction d'aggregat et donc cette requete sous SQLServer ne fonctionnera pas par contre en ajoutant un max sur date tu pourrais avoir la meme chose
Bon dev @+
Firetox
"Jerome PAULIN" a écrit dans le message de news:h7ld59$e84$
Bonjour,
Il me semble que le comportement du GROUP BY utilisé ici est spécifique à MySQL et pourrait bien être différent sur une autre base de données (à prendre en compte dans le cas où tu t'intéresse à autre chose que MySQL)...