2010-06-14 8 views
2

Je ces 2 tables:SQL: 2 compte en utilisant les jointures?

Tableau: Unité

UnitID | Title 
1  Unit 1 
2  Unit 2 
3  Unit 3 

Tableau: Piece

PieceID | UnitID | Category 
1   1  A 
2   1  A 
3   1  B 
4   2  A 
5   3  B 

Ce que je dois faire est de montrer un décompte des unités totales contenant des rangées de pièces avec Catégorie A, ainsi que le nombre total de lignes de table de pièces avec la catégorie A (indépendamment de unitid). Donc, en utilisant les données ci-dessus, le résultat serait de 2 unités, 3 rangées de pièces.

Je pourrais le faire avec deux instructions, mais je voudrais le faire un.

Des suggestions de gens plus rusés que moi?

Répondre

2

filtre les morceaux avec la bonne catégorie, compte alors les unités nettement:

select count(distinct UnitId) as Units, count(*) as Pieces 
from Piece 
where Category = 'A' 
+0

Cela semble fonctionner - je n'ai jamais vu le nombre utilisé avec distinct comme ça. Merci pour l'aide. – Todd

2

Essayez:

select count(distinct UnitID) total_units, count(*) total_rows 
from Piece 
where Cateory = 'A'; 
+0

Cette réponse a travaillé aussi bien (vraiment la même chose). Merci Mark. – Todd

Questions connexes