亚音速嵌套查询

时间:2012-02-24 10:21:50

标签: nested subsonic

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

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

1 个答案:

答案 0 :(得分: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列。

然后使用与此类似的SubSonic(确切的语法可能会有所不同......):

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)