我有兩個表= subjects
和stats
。其他表中的計數值
-- subjects --
------------------
| id | name |
------------------
| 1 | subjecta |
| 2 | subjectb |
| 3 | subjectc |
| 4 | subjectd |
| 5 | subjecte |
| 6 | subjectf |
| 7 | subjectg |
| 8 | subjecth |
| 9 | subjecte |
| ... | subjectf |
------------------
-- stats --
-----------------------------------
| user_id | subject_id | correct |
-----------------------------------
| 1 | 1 | false |
| 1 | 1 | false |
| 1 | 2 | false |
| 4 | 3 | false |
| 4 | 4 | false |
| 4 | 5 | false |
| 2 | 1 | true |
| 2 | 1 | true |
| 2 | 2 | false |
| 2 | 2 | true |
| 2 | 3 | false |
---------------------------------
我需要什麼,例如對於給定的user_id
(如2),讓所有的人(從受試者表),併爲那些他做(從統計)的正確的真/假伯爵像這個:
--------------------------------------------------
| id | name | correct true | correct false|
----------------------------------|----------------
| 1 | subjecta | 2 | 0 |
| 2 | subjectb | 1 | 1 |
| 3 | subjectc | 0 | 1 |
| 4 | subjectd | 0 | 0 |
| 5 | subjecte | 0 | 0 |
| 6 | subjectf | 0 | 0 |
| 7 | subjectg | 0 | 0 |
| 8 | subjecth | 0 | 0 |
| 9 | subjecte | 0 | 0 |
| ... | subjectf | 0 | 0 |
----------------------------------|--------------|
我不知道該怎麼做。
好像他們希望有一個'LEFT JOIN'因爲他們想返回所有科目用戶即使沒有統計。 – ollie
非常感謝您的快速回答。正如ollie所說,這隻會返回來自用戶有統計信息的主題的行。我想從主題的所有行。 我試圖改爲'SELECT t2.id, t2.name, SUM(CASE WHEN t1.correct ='true'THEN 1 ELSE 0 END)AS correct_true, SUM(CASE WHEN t1.correct ='false 「THEN ELSE 1 0 END)AS correct_false FROM受試者t2的 LEFT JOIN統計點t1 ON t2.id = t1.subject_id WHERE t1.user_id = 2 GROUP BY t2.id,t2.name'但同樣的事情 – AlainIb
@ AlainIb從'subjects'到'stats'做一個'LEFT JOIN'。這應確保每個主題始終顯示您選擇的每個用戶。對不起,但Rextester和SQLFiddle現在都有問題,所以我無法做任何測試。 –