結果の各レコードの子レコードの数を返したいですか?
lists
listid,name
----------------
1,foods
2,fruits
3,veggies
4,counties
5,blah /* other list types */
listitems
listid,listitemId,listname
----------------
1,1,fruits
2,1,veggies
3,3,carrots
4,3,broccoli
これが私が処理しなければならないクエリです:
declar @listid int
select @listid = 1 --as an example
select * from listitems where listid=@listid
results:
1,1,fruits
2,1,veggies
目標:この例では、果物と野菜に存在するアイテムの数を表示したいと思います。
listitems
listitemid,listid,name,childcount
1,1,fruits,0
2,1,veggies,2
これが私が答えを思いついた方法です:
select *,
(
select (select case when COUNT(*)>0 then 1 else 0 end as reccount
from ListItems li3 where li3.listid = l.listid)
from Lists l where li2.name = l.listname
) as haschildrecords
from ListItems li2 where listid=1
カウントとビットのどちらを返すかはまだ決定中です...
これは正しいですか、それとも最善の方法ですか?