2012-02-24 127 views
0

如何使用亚音速形成此查询?亚音速嵌套查询

SELECT A.categoryname, 
    (SELECT COUNT(*) 
    FROM items B 
    WHERE a.categoryid = b.categoryid) AS TOT 
FROM category A 

回答

0

你可以重写查询是这样的:

SELECT A.categoryname, COUNT(B.categoryid) AS TOT 
FROM category A LEFT OUTER JOIN items B ON A.categoryid = B.categoryid 
GROUP BY A.id, A.categoryname 

如果没有类别具有相同的名称,则可以省略A.id列。

然后用亚音速类似这样(的确切语法可能会有所不同...):

DAL.DB.Select(
    Aggregate.GroupBy(DAL.A.categorynameColumn), 
    Aggregate.GroupBy(DAL.A.idColumn) 
    Aggregate.Count(DAL.B.categoryidColumn, "Tot") 
    ) 
.From<DAL.A>().LeftOuterJoin(DAL.B.categoryidColumn, DAL.A.categoryidColumn)