只要符合以下条件,尝试在系统中显示所有提案:
我尝试了很多方法来尝试使这项工作,但我不断得到不同的数据,这不是我想要的。
问题是表格的设置方式。理论上,学生可以申请提案,如果发生这种情况,记录会自动添加到“记录”表中,状态设置为“6”表示待处理。然后在整个申请过程中多次更改此状态。
我需要的是向用户显示尚未采取的所有提案。状态代码表示“3”(由学生接受,因此另一名学生无法接受)和“8”(不可用)。 注意:并非所有提案都可能在此表中有记录(学生尚未申请)
这是迄今为止满足成为“主管”的第一个条件的查询
SELECT p.proposal_id, p.proposal_title,
p.description, u.user_record_id, u.forename,
u.surname, c.course_title, r.*,
GROUP_CONCAT(DISTINCT t.tag_title) AS tags
FROM proposal p
LEFT JOIN user u on u.user_record_id = p.user_record_id
LEFT JOIN proposal_tags pt on pt.proposal_id = p.proposal_id
LEFT JOIN tag_details t on t.tag_code = pt.tag_code
LEFT JOIN course_details c on c.course_code = p.course_code
LEFT JOIN record r on r.proposal_id = p.proposal_id
WHERE p.source = "Supervisor"
GROUP BY p.proposal_id
我试图让它显示所有可用的记录:
SELECT p.proposal_id, p.proposal_title,
p.description, u.user_record_id, u.forename,
u.surname, c.course_title, r.*,
GROUP_CONCAT(DISTINCT t.tag_title) AS tags
FROM proposal p
LEFT JOIN user u on u.user_record_id = p.user_record_id
LEFT JOIN proposal_tags pt on pt.proposal_id = p.proposal_id
LEFT JOIN tag_details t on t.tag_code = pt.tag_code
LEFT JOIN course_details c on c.course_code = p.course_code
LEFT JOIN record r on r.proposal_id = p.proposal_id
WHERE p.source = "Supervisor"
AND (r.status_code != 3 OR r.status_code !=8)
GROUP BY p.proposal_id
上述查询仍会返回状态代码为3的提案,但无法显示尚未申请的提案。
生成的SQLFiddle:http://sqlfiddle.com/#!9/b89a9/1/0
任何帮助都会非常感谢大家!谢谢。
答案 0 :(得分:1)
原来我错过了OR声明来实现我的目标。
为了得到我需要的最终结果,查询被修改为:
SELECT p.proposal_id, p.proposal_title, p.description, u.user_record_id, u.forename, u.surname, c.course_title, r.*, GROUP_CONCAT(DISTINCT t.tag_title) AS tags FROM proposal p
LEFT JOIN user u on u.user_record_id = p.user_record_id
LEFT JOIN proposal_tags pt on pt.proposal_id = p.proposal_id
LEFT JOIN tag_details t on t.tag_code = pt.tag_code
LEFT JOIN course_details c on c.course_code = p.course_code
LEFT JOIN record r on r.proposal_id = p.proposal_id
WHERE p.source = "Supervisor"
AND (r.status_code not in (3,8) OR r.status_code IS NULL)
GROUP BY p.proposal_id
成功收回所有可用的提案,这些提案来自主管和那些在“记录”表中没有记录的提案。
感谢所有帮助过的人