nombre d'occurrences de champs sur requete croisée

nombre d'occurrences de champs sur requete croisée - SQL/NoSQL - Programmation

Marsh Posté le 05-02-2009 à 15:33:52    

Bonjour
une table TR_ARTICLE constituée de 3 champs, le 1er est sa clé primaire mais les 2 derniers forment l'unicité (car une même référence_frn peut etre utilisée par plusieurs frn différents, exemple):
 
art_id, frn_id, art_ref_frn
--------------------------
001, f1, f210
002, f1, f210
003, g1, f210
 
 
 
une autre table TR_PRIX_COMMANDES constituee de (exemple):
 
(pk), art_id, acheteur, prix, quantite, ...
---------------------------------------------
(pk),001, moy8, 15, 12, ...
(pk),002, moy1, 230, 50, ...
(pk),003, moy7, 8, 2, ...
(pk),001, moy8, 14, 5, ...
(pk),001, moy8, 14, 10, ...
(pk),003, moy7, 4, 3, ...
(pk),001, moy4, 6, 50, ...
(pk),002, moy4, 12, 5, ...
(pk),002, moy4, 12, 5, ...
 
 
 
je veux savoir quel est l'acheteur qui a acheté le plus chaque article (identifié par le couple frn_id, art_ref_frn de la 1ère table), la quantité totale commandée pr l'article par l'ensemble des acheteurs, et le prix le plus haut acheté pr l'article (résultat escompté):
 
frn_id, art_ref_frn, quantite, prix_haut, acheteur
---------------------------------------------------
f1, f110, 77, 15, moy4
f1, f210, 60, 230, moy1
g1, f210, 5, 8, moy7
 
 
est-ce que je peux réussir en requete directe ou faudra-t-il que je passe par des appels de procédures?
pouvez-vous me mettre sur une piste?
 
mirci!

Reply

Marsh Posté le 05-02-2009 à 15:33:52   

Reply

Marsh Posté le 05-02-2009 à 17:05:47    

Regarde du côté de "group by" ainsi que du côté des fonctions d'agrégats tels que "count", "sum", ...
Ca te permettra déjà de savoir des trucs du genre "combien chaque personne à acheter ceci ou celà".
Après si tu veux celui qui a acheté le plus de ceci ou celà alors il faudra que tu regardes du côté des requêtes imbriqués si le gestionnaire de base de donnée les supportes.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed