gpt4 book ai didi

php mysql使用pdo在同一个表上加入查询

转载 作者:行者123 更新时间:2023-11-29 01:38:07 26 4
gpt4 key购买 nike

这是我的表,其中 ID 是表的主键,SUPER_ID 用于管理层次结构,例如,A 是 B 的 super 用户,B 是 C 的 super 用户,而 A 是 C 的 super super 用户... …………ID 和 SUPER_ID 不一定是连续的

现在的问题是,当 A 登录时,他可以看到自己的详细信息以及 B 和 C 的详细信息,而 B 登录后,他只能看到自己和 C 的详细信息。而C只能看到自己的详细信息。

我写了这个查询:

<?php
$sql="SELECT * from TABLE
WHERE
ID =:loginId OR
ID IN
(
SELECT ID FROM TABLE
WHERE SUPER_ID =:SuperId
)";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':logedIn' => $_SESSION['sess_login_id'] , ':SuperId' => $_SESSION['sess_login_id']) );
?>

当我以用户 A 身份登录时,此查询为我提供了 A 和 B 的结果。当我以用户 A 身份登录时,我应该编写什么查询才能获得 A 、 B 和 C 的结果?因为A是B的 super 用户,也是C的 super super 用户,求助。谢谢。

最佳答案

如果你只有三个层级,你可以这样做:

SELECT DISTINCT u.*
FROM user loggedin
LEFT JOIN user children ON children.SUPR_ID = loggedin.ID
LEFT JOIN user grandchildren ON grandchildren.SUPR_ID = children.ID
JOIN user u ON u.ID IN (loggedin.ID, children.ID, grandchildren.ID)
WHERE loggedin.ID = :loginId

http://sqlfiddle.com/#!9/3d93c/7

关于php mysql使用pdo在同一个表上加入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33841331/

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