gpt4 book ai didi

mysql - 如何加入3个表,主题,评论和用户

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

我有 3 个表,tbl_topic、tbl_comment、tbl_user。我想选择用户创建的所有主题以及他评论过的主题,即使他不是创建者。这是我的数据库:

tbl_topic
----------
topic_id
topic_title
user_id

tbl_comment
----------
comment_id
comment_message
user_id
topic_id

tbl_user
----------
user_id
user_name

非常需要它。谢谢!

到目前为止我得到了这个

select * from tbl_topic T inner join tbl_comment C on T.topic_id = C.topic_id inner join tbl_user U on T.user_id = U.user_id GROUP BY T.topic_id

我的问题是它只返回对其有评论的主题。我想包括用户创建的主题,即使它有 0 条评论。

我希望结果是这样的:

  +-----------+-----------+----------+-------------+----------------+----------+-------
| topic_id | topic_title | user_id | comment_id | comment_message | user_id | topic_id |
+-----------+-----------+----------+-------------+----------------+----------+--------
| 1 | my topic | 1 | 1 | comment me | 1 | 1
| 2 | others | 2 | 2 | comment me | 1 | 2
| 3 | my nocoment| 1 | NULL | NULL | NULL | NULL
+-----------+---------+--------+-------------+----------+----------+---------+--------

----------+-----------+
user_id | user_name |
-----------+-----------
1 | me |
2 | someone |
1 | me
-----------+---------+--

我弄乱了表中的字段,comment_message 旁边的 user_id 应该是 comment_user_id,但我已经以这种方式创建了我的数据库。您能帮助实现这一目标吗?

最佳答案

下面的查询在子查询中使用了 UNION第一个 SELECT 获取用户创建的所有主题。 第二个 SELECT 语句获取用户的所有评论并将其加入表tbl_topic 因此我们可以获得topic_title .

SELECT  topic_ID, topic_title
FROM
(
SELECT a.user_ID, b.topic_ID, b.topic_title
FROM tbl_user a
INNER JOIN tbl_topic b
ON a.user_ID = b.user_ID
UNION
SELECT a.user_ID, c.topic_ID, c.topic_title
FROM tbl_user a
INNER JOIN tbl_comment b
ON a.user_ID = b.user_ID
INNER JOIN tbl_topic c
ON b.topic_ID = c.topic_ID
) x
WHERE x.user_ID = ?

关于mysql - 如何加入3个表,主题,评论和用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757650/

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