Select ds Oracle (Complexe ?!)
Résolu
OlivrT
Messages postés
323
Date d'inscription
Statut
Membre
Dernière intervention
-
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
la requête suivante, me retourne le nombre total d'achat d'un client chez un vendeur :
J'obtiens par exemple :
------------------------------------
| Id vendeur | Id Client | Nb d'achat
|-----------------------------------
| 1234 | 230 | 45
|-----------------------------------
| 5969 | 230 | 125
|-----------------------------------
| 9972 | 596 | 12
|-----------------------------------
| 4412 | 596 | 129
|-----------------------------------
Mais je voudrais obtenir, le nombre maximum d'achat chez un vendeur par client et donc le tableau suivant :
------------------------------------
| Id vendeur | Id Client | Nb d'achat
|-----------------------------------
| 5969 | 230 | 125
|-----------------------------------
| 4412 | 596 | 129
Mais comment faire ? Je rappelle que je travaille dans Oracle et donc la commande Top qu'on trouve dans MSAccess n'existe pas ...
Dans ce cas-ci, la commande Max ne peut être utiliser non plus puisqu'il y a un regroupement sur l'identifiant du dossier et du vendeur !
Merci d'avance
|-----------------------------------
Krilin
« Je suis pas contre les excuses...je suis même prêt à en recevoir. » (Les grandes familles) :-)
la requête suivante, me retourne le nombre total d'achat d'un client chez un vendeur :
SELECT v.vdr_tk , c.cli_tk, COUNT(*) total_tr FROM achat a, vendeur v, client c WHERE (a.vdr_tk = v.vdr_tk) AND (a.cli_tk = c.cli_tk) GROUP BY v.vdr_tk , c.cli_tk ORDER BY c.cli_tk
J'obtiens par exemple :
------------------------------------
| Id vendeur | Id Client | Nb d'achat
|-----------------------------------
| 1234 | 230 | 45
|-----------------------------------
| 5969 | 230 | 125
|-----------------------------------
| 9972 | 596 | 12
|-----------------------------------
| 4412 | 596 | 129
|-----------------------------------
Mais je voudrais obtenir, le nombre maximum d'achat chez un vendeur par client et donc le tableau suivant :
------------------------------------
| Id vendeur | Id Client | Nb d'achat
|-----------------------------------
| 5969 | 230 | 125
|-----------------------------------
| 4412 | 596 | 129
Mais comment faire ? Je rappelle que je travaille dans Oracle et donc la commande Top qu'on trouve dans MSAccess n'existe pas ...
Dans ce cas-ci, la commande Max ne peut être utiliser non plus puisqu'il y a un regroupement sur l'identifiant du dossier et du vendeur !
Merci d'avance
|-----------------------------------
Krilin
« Je suis pas contre les excuses...je suis même prêt à en recevoir. » (Les grandes familles) :-)
A voir également:
- Select ds Oracle (Complexe ?!)
- Ds clock - Télécharger - Bureautique
- Please select boot device - Forum Windows
- Oracle liste des tables ✓ - Forum Oracle
- Reboot and select proper boot device asus - Forum Matériel & Système
- My sims kingdom ds soluce ✓ - Forum Jeux vidéo
3 réponses
Salut,
J'essaierai quelque chose comme :
cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
J'essaierai quelque chose comme :
select vdr_tk, cli_tk, max(total_tr) from ( SELECT v.vdr_tk , c.cli_tk, COUNT(*) total_tr FROM achat a, vendeur v, client c WHERE (a.vdr_tk = v.vdr_tk) AND (a.cli_tk = c.cli_tk) GROUP BY v.vdr_tk , c.cli_tk ) group by cdr_tk, cli_tk;
cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Salut,
je l'avais fait cette requête mais comme l'identidiant du vendeur est présent, j'ai le même résultat :-/
je l'avais fait cette requête mais comme l'identidiant du vendeur est présent, j'ai le même résultat :-/
J'ai trouvé :
SELECT Q1.*
(
SELECT v.vdr_tk , c.cli_tk, COUNT(*) total_tr
FROM achat a, vendeur v, client c
WHERE (a.vdr_tk = v.vdr_tk) AND (a.cli_tk = c.cli_tk)
GROUP BY v.vdr_tk , c.cli_tk
)
Q1
INNER JOIN
(
SELECT c.cli_tk, COUNT(*) total_tr
FROM achat a, vendeur v, client c
WHERE (a.vdr_tk = v.vdr_tk) AND (a.cli_tk = c.cli_tk)
GROUP BY v.vdr_tk , c.cli_tk
)
Q2
WHERE (Q1.cli_tk = Q2.cli_tk) AND (Q1.total_tr = Q2.total_tr)
Merci quand même pour l'aide.
SELECT Q1.*
(
SELECT v.vdr_tk , c.cli_tk, COUNT(*) total_tr
FROM achat a, vendeur v, client c
WHERE (a.vdr_tk = v.vdr_tk) AND (a.cli_tk = c.cli_tk)
GROUP BY v.vdr_tk , c.cli_tk
)
Q1
INNER JOIN
(
SELECT c.cli_tk, COUNT(*) total_tr
FROM achat a, vendeur v, client c
WHERE (a.vdr_tk = v.vdr_tk) AND (a.cli_tk = c.cli_tk)
GROUP BY v.vdr_tk , c.cli_tk
)
Q2
WHERE (Q1.cli_tk = Q2.cli_tk) AND (Q1.total_tr = Q2.total_tr)
Merci quand même pour l'aide.