1
我仍然是數據庫和MySQL的新手,我想學習如何使用JOINs
。我很抱歉,我不知道這個案件的話。我希望你們所有人都能通過查看這些數據來理解。下面是與記錄表:選擇基於其他表的數據
student_name | semester | subject_id | comp_id | mark
-------------------------------------------------------
Connor 1 24 1 9
Connor null 24 2 null
Connor null 24 3 null
有任何人能幫助我:
Table student
student_id | student_name
-------------------------
1 Ana
2 Billy
3 Connor
Table comp
comp_id | subj_id | comp_name
--------------------------
1 24 Run
2 24 Swim
3 24 Jump
4 25 Eat
Table comp_mark
semester | subj_id | student_id | comp_id | mark
-------------------------------------------------
1 24 1 1 7
1 24 1 2 4
1 24 1 3 6
1 24 2 1 4
1 24 2 2 8
1 24 3 1 9
我從查詢中選擇comp_mark
表(更新)預期的結果是這樣的?感謝一噸
它由student_name UPDATE
我已經試過這(紀堯姆Poussel的查詢)和ORDER:
SELECT s.student_name, cm.semester, c.subj_id AS subject_id, c.comp_id, cm.mark
FROM student s
CROSS JOIN comp c
LEFT JOIN comp_mark cm ON s.student_id = cm.student_id
AND cm.subj_id = c.subj_id
AND cm.comp_id = c.comp_id
ORDER BY s.student_name
結果:
向我們展示你到目前爲止嘗試了什麼? – thebjorn
'和cm.semester ='1' AND cm.subj_id ='1''semester和subj_id不是字符列,而是INTEGER。你應該將它們與int值進行比較,如'AND cm.semester = 1 AND cm.subj_id = 1'(我知道mysql會自動執行此類型轉換,但這也應該被認爲是一個嚴重的缺陷) – wildplasser
要過濾掉不需要,只需添加一個WHERE子句。例如,'WHERE cmm.subj_id = 24 AND cm.student_id = 4' –