gpt4 book ai didi

mysql - 简化海量mysql查询

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

我目前有 3 个表,分别是 reports、users 和 clients

reports有5个字段,分别是:

report_id INT,
user_id INT (FK to users on user_id)
client_id INT (FK to clients on client_id)
create_date DATE
description TEXT

users分别有4个字段

user_id INT
username VARCHAR
password VARCHAR
parent_id INT (FK to users on user_id)

clients分别有3个字段

client_id INT
firstname VARCHAR
lastname VARCHAR

如您所见,一个用户可以有一个父用户(某种管理员)。我想获取父用户和普通用户创建的所有报告并显示它们。我已经想出一个查询来执行此操作,但它非常庞大。

例如:获取 ID 为 4 的父用户的所有报告及其所有子用户的报告。

(SELECT c.firstname, c.lastname, r.report_id, r.date, u.name 
FROM clients c, reports r, users u
WHERE u.users_id=4
AND r.user_id = u.users_id
AND c.client_id = r.client_id)
UNION
(SELECT c.firstname, c.lastname, r.report_id, r.date, u.name
FROM clients c, reports r, users u
WHERE u.parent_id=4
AND r.user_id = u.users_id
AND c.client_id = r.client_id);

有什么办法可以简化这个查询吗?我很不走运。

提前致谢;

最佳答案

您可以使用OR,因为这两个查询几乎相同

SELECT * 
FROM clients c, reports r, users u
WHERE r.user_id = u.users_id
AND c.client_id = r.client_id
AND (u.users_id=4 OR u.parent_id=4)

关于mysql - 简化海量mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059454/

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