2010-08-09 5 views
0

Voici ce que je veux réaliser:groupe distinct par problème de jointure

J'ai un certain nombre de catégories, chacune avec des produits.

Je veux produire un rapport qui montre diverses informations sur ces produits pour chaque catégorie. Donc, j'ai une requête qui ressemble à quelque chose comme:

select 
category, 
count(products), 
sum(product_price), 
from product 
group by category 

Jusqu'ici tout va bien.

Mais maintenant je veux aussi obtenir des informations spécifiques à une catégorie à partir d'une table qui a des informations par catégorie. Donc, en réalité, je veux dire:

rejoindre category_info la catégorie

, sauf que cela va créer une jointure pour chaque ligne de chaque groupe, plutôt qu'un seul rejoindre pour chaque groupe. Ce que je veux vraiment pouvoir dire à sql est 'pour chaque groupe, prenez la valeur de la catégorie distincte, dont il est garanti qu'elle ne l'est que depuis que je suis en train de la grouper, et ensuite l'utiliser pour rejoindre la catégorie table d'informations '

Comment puis-je accomplir cela en SQL? Par ailleurs, j'utilise Oracle 10g ..

Merci beaucoup!

Répondre

5
select a.category, a.Count, a.SumPrice 
    ci.OtherColumn 
from (
    select p.category, 
     count(p.products) as Count, 
     sum(p.product_price) as SumPrice, 
    from product p 
    group by category 
) a 
inner join category_info ci on a.category = ci.category 
+0

Fonctionne parfaitement - merci beaucoup! – Bruce