在MYSQL中从Table中选择SELECT行两次

时间:2016-02-01 18:46:32

标签: php mysql join

相关问题没有解决我的问题: Selecting a column from a table in MySQL twice

我目前正在尝试为我的网站创建评论区域,用户可以在其中添加评论并回复其他用户评论。

因此,每当我将注释保存到数据库时,我都会添加以下数据:

  • 文字:用户输入文字
  • 问题ID:引用我网站上的子站点的ID
  • 用户ID:发送评论的用户的用户ID
  • 回复ID:此评论回复的评论的ID

表和结果(应该)看起来像这样

Tables and join result

现在,在尝试获取特定网站的所有评论时,包括撰写answer_to列中引用的评论的用户的姓名,我就碰壁了。

到目前为止我做了什么:

SELECT comment.id,
       comment.reply_to,
       comment.text,
       comment.date,
       comment.user_id,
       users.name,
       users.user_group,
       user_group.name AS group_name,
       users_to.name AS reply_to_username,
FROM COMMENT,
     users,
     user_group
JOIN COMMENT AS comment_to ON COMMENT.reply_to = comment_to.id
JOIN users AS users_to ON comment_to.user_id = users.id
WHERE COMMENT.question_id = 1
  AND COMMENT.user_id = users.id
  AND users.user_group = user_group.id
  AND COMMENT.id <> 0
ORDER BY COMMENT.date DESC

我遇到的问题是,它总是告诉我,comment.reply_to是一个未知的列。

我是否可以加入我当前正在使用该SELECT语句选择的同一个表。 我知道我可以通过2个单独的陈述来做到这一点,但是出于性能原因,我宁愿这样做。

2 个答案:

答案 0 :(得分:0)

这对你有用吗?还有额外的逗号,并且comment_positive未定义。

SELECT
a.id,
a.reply_to,
a.text,
a.date,
a.user_id,
b.name,      
b.user_group,
c.name as group_name,
users_to.name   as reply_to_username
FROM comment a
INNER JOIN users b ON a.user_id = b.id
INNER JOIN user_group c ON b.user_group = c.id
INNER JOIN comment as comment_to ON a.reply_to = comment_to.id
INNER JOIN users   as users_to ON comment_to.user_id = users.id
WHERE a.question_id = 1
AND a.id  <> 0
ORDER BY a.date DESC

答案 1 :(得分:0)

SELECT
a.id,
a.reply_to,
a.text,
a.date,
a.user_id,
b.name,      
b.user_group,
c.name as group_name,
users_to.name   as reply_to_username
FROM comment a
INNER JOIN users b ON a.user_id = b.id
INNER JOIN user_group c ON b.user_group = c.id
INNER JOIN comment as comment_to ON a.reply_to = comment_to.id
INNER JOIN users   as users_to ON comment_to.user_id = users_to.id
WHERE a.question_id = 1
AND a.id  <> 0
ORDER BY a.date DESC

这解决了我的问题。现在一切都按预期返回。 谢谢你的帮助。