gpt4 book ai didi

mysql - SQL 查询 - 尝试使用 AND/OR 和 JOINS 根据特定条件显示结果

转载 作者:行者123 更新时间:2023-11-29 00:01:28 25 4
gpt4 key购买 nike

尝试在系统中显示所有满足以下条件的提案:

  • 来源必须是主管
  • 记录表中的status_code不能为8或3

我已经尝试了多种方法来尝试完成这项工作,但我不断得到不同的数据,这不是我想要的。

问题在于表格的设置方式。理论上,学生可以申请提案,如果发生这种情况,记录会自动添加到“记录”表中,状态设置为“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

任何帮助将不胜感激!谢谢。

最佳答案

原来我缺少一个 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

成功带回所有可用的提案,来自主管的提案以及在“记录”表中没有记录的提案。

感谢所有帮助过的人

关于mysql - SQL 查询 - 尝试使用 AND/OR 和 JOINS 根据特定条件显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29608785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com