我有两个表,Test
和StudentTest
具有以下结构:
Test
:
testID subject totalPoints schoolSubject
1 Programming 100 informatics
2 Webdesign 80 informatics
...
StudentTest
:
studentTestID userID testID timeStudied points date
1 1 1 60 60 2015-05-20
2 2 1 100 80 2015-05-20
2 2 2 95 75 2015-05-20
...
现在我想创建一个用户可以填写标记的页面(在StudentTest
中),但我只想显示用户尚未标记的测试。例如,如果用户1已登录,则他应该只看到测试2,因为用户1没有该测试的标记。用户2不应该看到任何东西,因为他有所有现有测试的标记。
我不知道SQL应该是什么样的。
有人可以帮我这个吗?
答案 0 :(得分:0)
您可以使用exists
运算符:
SELECT subject, schoolSubject
FROM Test t
WHERE NOT EXISTS (SELECT *
FROM StudentTest st
WHERE t.testId = st.testId
-- And possibly limit it to a single studentId
)
答案 1 :(得分:0)
使用左连接空过滤器模式:
SELECT subject, schoolSubject
FROM Test t
LEFT JOIN StudentTest st ON t.testId = st.testId
WHERE st.testId IS NULL