2013-06-22 29 views
2

您好我有這個SQL查詢中的Android有點混亂使用SQLitesqlite的連接語句與3個表和篩選器

我有3個簡單的表格 表類別

|_id|name| 
    |1 |cat1 
    |2 |cat2 
    |3 |cat3 
    |4 |cat4 

表列表

|_id|name| 
    |1 |list1 
    |2 |list2 
    |3 |list3 
    |4 |list4 

和我有其他的表,其中包含以前的表的ID s

|_id|category|list |name 
| 1 |2  |1  |item1 
| 2 |1  |2  |item2 
| 3 |2  |3  |item3 
| 4 |2  |1  |item4 

我想左加入這樣 其始終顯示爲 CAT1貓表(計數10) CAT2(計數2) CAT3(計數3) CAT4(計數4)

當我與在名單中篩選= 1,則該類別沒有按顯示空列

任何建議

回答

1

你可以使用子查詢:

SELECT category.name as cat, B.catcount as catcount 
FROM category LEFT JOIN (SELECT table3.category, count(*) AS catcount 
FROM table3 
WHERE table3.list=1 
GROUP BY table3.category) as B ON category.[_id] = B.category; 

應該給像輸出:

|cat |catcount| 
|cat1 | null| 
|cat2 |  2| 
|cat3 | null| 
|cat4 | null| 
+0

沒錯這就是完美的我明白一切,但你能解釋的總和()函數是聚集那麼它有什麼作用,因爲那裏有沒有什麼補充的計感謝 – JahShaka

+0

你是對,我會編輯我的答案 –

+0

它在那裏,因爲在我的第一種方法中,sum()是需要的,我在發佈之前更改了它,但忘記修復該部分。儘管如此,它是無害的。 –