2017-05-04 50 views
0

我想連接課程和課程兩個表分配給學生。 在過程表中的數據示例sql連接跳過匹配值

當然表:

id | name 
1 | computer fundamental 
2 | programming with c 
3 | electrical engineering 
3 | neural network 

course_to_student表:

course_id | std_id 
1   | 1 
2   | 2 
3   | 1 

然後STD ID 1:resuld應該是

  • 2:用C編程
  • 4:神經網絡

和std_id 2 resuld應該

  • 1:計算機基礎
  • 3:電氣工程
  • 4:神經網絡

我怎麼能這樣做?

+0

STD ID:1與課程編號1和3的關聯,但你要2和4。即。該學生選擇的課程是否正確? – Jagrati

+1

所以你想要的課程,沒有分配給學生@saddam侯賽因 –

+0

對不起夥計神經網絡應該是4 –

回答

0
$std_id =1; 

SELECT t1.course_id, t1.course_name 
FROM table t1, table t2 
WHERE t1.course_id = t2.course_id 
    AND t2.std_id <> $std_id 
+0

課程表http://prnt.sc/f41o0o course_enroll_std_表http://prnt.sc/f41oqd謝謝你檢查我的問題。 –

0

我想你只是在尋找兩個表之間的LEFT JOIN。如果我正確地閱讀了您的預期輸出,您希望確定當前登記的給定學生爲而非的課程。

SELECT c.name 
FROM course c 
LEFT JOIN course_to_student s 
    ON c.id = s.course_id 
WHERE s.course_id IS NULL AND 
     s.std_id = 1   -- or s.std_id = 2, etc. 
+0

是的,但你的代碼不工作。我的完整SQL代碼是SELECT course.course_name,course_enroll_student.std_id FROM'course' LEFT JOIN course_enroll_student ON course_enroll_student.course_id = course.id更改代碼並獲得輸出 –

+0

用實際數據更新您的問題,格式爲表格。然後,我可以更新我的答案,如果這是必要的。 –

+0

感謝您的評論,但我無法更新我的問題,因爲點數不足 –

0

可以使用NOT IN

$std_id =1; 

SELECT * 
FROM course 
WHERE id NOT IN (SELECT course_id 
        FROM course_to_student 
        WHERE std_id = $std_id)