【发布时间】:2021-07-16 16:33:12
【问题描述】:
我的数据库中有四个相互关联的表。
document_category(document_category_id, document_category)
document_type(document_type_id, document_category.document_category_id, document_type)
student(student_id, f_name, l_name, ...other_columns)
student_document(id, student.student_id, document_type.document_type_id, file)
document_category、document_type、student 和 student_document
表student_document 存储上传的文档。 我希望查询显示学生未上传的文档列表。
我试过了
(SELECT document_type FROM document_category JOIN document_type ON document_category.document_category_id = document_type.document_category_id
) LEFT JOIN(SELECT FILE FROM student_document JOIN student ON student.student_id = student_document.student_id) ON document_type.document_type_id = student_document.document_type_id
我得到一个错误
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LEFT JOIN(
SELECT FILE
FROM
student_document
JOIN student ON stud...' at line 8
我也试过了
SELECT * FROM document_type A LEFT JOIN student_document B ON A.document_type_id = B.document_type_id WHERE B.document_type_id is null
这给了我 Results,但我无法获取特定学生的数据。
我最后尝试的是
SELECT student.email, student_document.file, document_type, document_category FROM student, document_type, document_category, student_document WHERE NOT EXISTS(SELECT * FROM student_document WHERE student_id = 'M054/T19' AND document_type_id ='20') AND student.student_id = student_document.student_id AND document_type.document_category_id = document_category.document_category_id
这给了我Undesirable,这不是我想要的。
【问题讨论】:
-
为子查询分配别名。