我有兩個表:書籍和USERS_BOOKS:一個SELECT語句中的值
書:
| ID | BOOKNAME |
|----|----------|
| 1 | Book1 |
| 2 | Book2 |
| 3 | Book3 |
| 4 | Book4 |
| 5 | Book5 |
USERS_BOOKS:
| ID | USERID | BOOKID | STATUS |
|----|--------|--------|--------|
| 1 | 001 | 1 | Read |
| 2 | 001 | 2 | Read |
| 3 | 001 | 3 | Added |
| 4 | 002 | 1 | Added |
| 5 | 002 | 5 | Added |
| 6 | 003 | 2 | Read |
| 7 | 004 | 4 | Read |
http://sqlfiddle.com/#!2/9cff9/1
從這個sqlfiddle我可以查詢書籍列表和讀取它們的人數。
select BOOKS.ID, BOOKS.BOOKNAME,
SUM(CASE WHEN USERS_BOOKS.STATUS='Read' THEN 1 ELSE 0 END) AS NUM_READ
from BOOKS
LEFT JOIN USERS_BOOKS ON USERS_BOOKS.BOOKID = BOOKS.ID
GROUP BY BOOKS.ID
http://sqlfiddle.com/#!2/9cff9/1
我需要添加到這個查詢的是,我想看看如果特定用戶(用戶標識001)閱讀這些書籍或沒有。因此,在第四列中,我想展示我閱讀第一本書(YES),閱讀第二本書NOTREAD第三本,第四本和第五本書(NO)。 (一個人讀了第四本書,但那不是我)。
期望的結果:
| ID | BOOKNAME| NUM_READ | DID_I_READ_IT|
|----|---------|----------|--------------|
| 1 | BOOK1 | 1 | YES |
| 2 | BOOK2 | 2 | YES |
| 3 | BOOK3 | 0 | NO |
| 4 | BOOK4 | 1 | NO |
| 5 | BOOK5 | 0 | NO |
那麼最新?爲查詢中的兩個字段? –
是的,這兩個是用戶標識和狀態。我在@Ollie Jones的回答中對此進行了澄清。這是否更清楚? – erdomester
通常使用http://sqlfiddle.com/來創建這些類型的東西很有用。但是,您將示例數據作爲圖像呈現,並將示例結果集作爲php轉儲,因此很難進行實驗。如果您提供您想要的結果,這可能會有所幫助 –