2015-05-27 123 views
0

我需要查詢幫助,無法使其正常工作。我試圖實現的是有一個選擇框顯示與特定主題相關聯的記錄數,對於某些主題它可以很好地顯示(0),當實際上有2條記錄時,我想知道是否有人可以幫我在這,你的幫助將不勝感激,請參閱下面我的實際查詢+表結構:使用多個表格和字段在列表框中顯示記錄數

SELECT theme.id_theme, theme.theme, calender.start_date, 
     calender.id_theme1,calender.id_theme2, calender.id_theme3, COUNT(*) AS total 
FROM theme, calender 
WHERE (YEAR(calender.start_date) = YEAR(CURDATE()) 
    AND MONTH(calender.start_date) > MONTH(CURDATE())) 
    AND (theme.id_theme=calender.id_theme1) 
    OR (theme.id_theme=calender.id_theme2) 
    OR (theme.id_theme=calender.id_theme3) 
GROUP BY theme.id_theme 
ORDER BY theme.theme ASC 

主題表

|---------------------| 
| id_theme | theme | 
|----------|----------| 
|  1 | Yoga | 
|  2 | Music | 
|  3 | Taichi | 
|  4 | Dance | 
|  5 | Coaching | 
|---------------------| 

萬年曆錶

|---------------------------------------------------------------------------| 
| id_calender | id_theme1 | id_theme2 | id_theme3 | start_date | end_date | 
|-------------|-----------|-----------|-----------|------------|------------| 
|  1  |  2  |  4  |   | 2015-07-24 | 2015-08-02 | 
|  2  |  4  |  1  |  5  | 2015-08-06 | 2015-08-22 | 
|  3  |  1  |  3  |  2  | 2014-10-11 | 2015-10-28 | 
|---------------------------------------------------------------------------| 

LISTBOX

|----------------| 
|    | 
| Yoga (1) | 
| Music (1) | 
| Taichi (0) | 
| Dance (2) | 
| Coaching (1) | 
|----------------| 

請多關照

回答

0

我認爲主題條件應該放在括號

((theme.id_theme=calender.id_theme1) 
OR (theme.id_theme=calender.id_theme2) 
OR (theme.id_theme=calender.id_theme3)) 

希望這有助於

+0

阿列克謝您好,感謝回答,我已經添加括號,它仍然是相同的結果 –

+0

我認爲你應該使用多對多的關聯實現許多日曆主題,你的問題將解決由加入編輯。在當前實現中,您必須從日曆表中選擇所有主題ID,然後使用where語句。 – idej

相關問題