gpt4 book ai didi

php - 带有连接的 mysql 查询的可能规范化

转载 作者:行者123 更新时间:2023-11-29 23:46:35 25 4
gpt4 key购买 nike

我查询了一个 child 的 parent ,直到第 6 个 parent 。查询工作正常。但我只是想知道是否有更好的范围通过更好的查询来实现结果,因为将来如果我想获取父级 7 和父级 8,我需要修改此代码,并且随着获取的增加,这将需要很长时间家长 ID 。另外,如果任何事情都可以通过 php 实现,那就太好了。

SELECT
u.referred_by as parent_1,
c1.referred_by as parent_2,
c2.referred_by as parent_3,
c3.referred_by as parent_4,
c4.referred_by as parent_5,
c5.referred_by as parent_6
FROM
users u
LEFT JOIN users c1
ON c1.id=u.referred_by
LEFT JOIN users c2
ON c2.id = c1.referred_by
LEFT JOIN users c3
ON c3.id = c2.referred_by
LEFT JOIN users c4
ON c4.id = c3.referred_by
LEFT JOIN users c5
ON c5.id = c4.referred_by
WHERE u.id = 30

SQL FIDDLE

http://sqlfiddle.com/#!2/24694/1

最佳答案

您可以在您的作品中使用递归。以下是一个简单的递归代码,它返回所有祖先,但如果您想限制要返回的父级的数量,您可以使用以下代码创建一个函数,并将参数 6(或 7)作为参数发送,并检查您是否是否达到了你 parent 的特定水平。希望它有效。 :)

with parents as (
select id, referred_by
from users
where id = 30
union all
select u.id, u.referred_by
from users u
join parents p on p.id = u.referred_by
)
select *
from parents;

关于php - 带有连接的 mysql 查询的可能规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25900323/

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