gpt4 book ai didi

mysql - 在具有联接表的查询中,如何设置仅影响一行而不影响联接创建的所有行的 where 子句

转载 作者:行者123 更新时间:2023-11-29 02:39:40 25 4
gpt4 key购买 nike

我用 php 和 mysql 数据库构建了一个网络应用程序。用户可以提出想法或提出要求,站点管理员可以对其进行验证。如果所有经理都验证了请求,则请求被接受。

我的数据库中有 4 个表,一张用于用户,一张用于用户请求,一张用于经理,一张用于经理的验证流程。

User
______
Id PK
Name
...

User_s_request
______________
Id PK
User_id
Request

Manager
_________
User_id PK

Manager_s_validation
____________________
User_request_id PK
Manager_id PK
Validation_date

当经理转到验证页面时,我会显示一个 html 表,显示仍需要该经理验证的用户请求。

SELECT ur.id from user_request AS ur
JOIN manager_validation AS mv ON mv.user_request_id = ur.id
JOIN manager AS m ON m.user_id = mv.manager_id
WHERE mv.manager_id != $manager_id OR mv.user_request_id IS NULL
LIMIT 1

当此经理尚未验证时,我的查询有效。显示请求。当唯一的验证来自该经理时,我的查询有效。但是如果这个经理和另一个(或更多)验证了,它就不起作用了。请求在不应该显示的时候显示。

怎样才是正确的要求?

最佳答案

在我看来,您正在搜索 NOT EXISTS,即选择某个经理不存在验证的所有用户请求。

SELECT *
FROM user_request ur
WHERE NOT EXISTS (SELECT *
FROM manager_validation mv
WHERE mv.user_request_id = ur.id
AND mv.manager_id = ?);

关于mysql - 在具有联接表的查询中,如何设置仅影响一行而不影响联接创建的所有行的 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55408542/

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