gpt4 book ai didi

php - 表连接混淆检索数据

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

我正在尝试从关系表中检索数据,以显示输入到其中的 id 中的信息。

我有 3 张 table :

users
id
username
email
password

projects
id
name

fave_project
id
user_id
project_id

我想查询关系表以显示与特定用户 ID 相关联的项目名称,我通过 session 将其存储在变量中。

这里是我的 SQL 查询,它在一定程度上有效,但结果重复:

$sql = "SELECT fav_project.project_id, fav_project.user_id, project.id, project.name
FROM fav_project
JOIN users
JOIN project
ON fav_project.project_id = project.id
WHERE fav_project.user_id = $userId";

更新

这是我的输出示例:

array(4) { ["project_id"]=> string(2) "10" ["user_id"]=> string(1) "7" ["id"]=> string(1) "8" ["name"]=> string(12) "Test Project" } array(4) { ["project_id"]=> string(2) "12" ["user_id"]=> string(1) "7" ["id"]=> string(1) "8" ["name"]=> string(15) "Awesome project" } array(4) { ["project_id"]=> string(2) "10" ["user_id"]=> string(1) "7" ["id"]=> string(1) "7" ["name"]=> string(12) "Test Project" } array(4) { ["project_id"]=> string(2) "12" ["user_id"]=> string(1) "7" ["id"]=> string(1) "7" ["name"]=> string(15) "Awesome project" }

最佳答案

如果一名用户拥有多个项目,那么您将看到重复的用户 ID(每个用户都有不同的项目 ID)。如果您希望每个用户 ID 一行,那么您将必须使用分组函数,例如 group_concat。下面是一个例子

SELECT u.id, GROUP_CONCAT(p.name)
FROM users u JOIN fave_projects fp on u.id = fp.user_id
JOIN projects p ON fp.project_id = p.id
WHERE u.id = $userId
GROUP BY u.id;

Heregroup_concat 的文档。

更新

如果您只想查看项目,则应执行以下操作:

SELECT DISTINCT p.id, p.name
FROM users u JOIN fave_projects fp on u.id = fp.user_id
JOIN projects p ON fp.project_id = p.id
WHERE u.id = $userId;

更新

要使现有查询正常工作,您需要向其添加 DISTINCT,例如:

SELECT DISTINCT fav_project.project_id, fav_project.user_id, project.id, project.name
FROM fav_project
JOIN users
JOIN project
ON fav_project.project_id = project.id
WHERE fav_project.user_id = $userId"

关于php - 表连接混淆检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42057625/

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