gpt4 book ai didi

MySQL加入3个表和空行

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

出于搜索原因,我暂时放弃我的 JOIN 创建 View - 我需要帮助:/

这是我的表格:

个人资料

id   company    user_id
1 ACME 2
2 Joe 4
3 Wolf 5

用户

id   role_id   online
2 4 2010-10-08
4 2 2010-10-08
5 4 2010-10-08

评分标准

id    title
1 Steel
2 Stone
3 Wood

Profiles_Rubrics

profile_id   rubric_id
1 1
1 2
2 3
2 1

我想从这些表中得到的是一个 View ,每个配置文件一行 - 还包括在 HABTM Profiles_Rubrics 中没有条目的配置文件。现在我只能得到在 HABTM 表中有条目的配置文件:

CREATE OR REPLACE VIEW Catalog_Branches AS
SELECT
profiles.id,
profiles.company,
GROUP_CONCAT(DISTINCT CAST(rubrics.id AS CHAR) SEPARATOR ', ') AS rubric,
GROUP_CONCAT(DISTINCT CAST(rubrics.title AS CHAR) SEPARATOR ', ') AS rubric_title,
profiles.user_id
FROM
profiles,
profiles_rubrics
JOIN rubrics ON profiles_rubrics.rubric_id=rubrics.id,
users
WHERE
profiles_rubrics.profile_id=profiles.id
AND profiles_rubrics.rubric_id=rubrics.id
AND users.id=profiles.user_id
AND users.profile_online IS NOT NULL
AND users.role_id!=1
GROUP BY
profiles.id

我在 stackoverflow 上的其他答案的帮助下尝试了它,但无法达到它返回所有配置文件的地步。从上面的所有内容中可以看出,我不是 MySQL 的大专家 :)

最佳答案

您需要使用 LEFT JOINS。

有点像

SELECT 
profiles.id,
profiles.company,
GROUP_CONCAT(DISTINCT CAST(rubrics.id AS CHAR) SEPARATOR ', ') AS rubric,
GROUP_CONCAT(DISTINCT CAST(rubrics.title AS CHAR) SEPARATOR ', ') AS rubric_title,
profiles.user_id
FROM
profiles LEFT JOIN
profiles_rubrics ON profiles_rubrics.profile_id=profiles.id LEFT JOIN
rubrics ON profiles_rubrics.rubric_id=rubrics.id LEFT JOIN
users ON users.id=profiles.user_id
WHERE
users.profile_online IS NOT NULL
AND users.role_id!=1
GROUP BY
profiles.id

看看SQL Joins

关于MySQL加入3个表和空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3966516/

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