相关问题没有解决我的问题: Selecting a column from a table in MySQL twice
我目前正在尝试为我的网站创建评论区域,用户可以在其中添加评论并回复其他用户评论。
因此,每当我将注释保存到数据库时,我都会添加以下数据:
表和结果(应该)看起来像这样
现在,在尝试获取特定网站的所有评论时,包括撰写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个单独的陈述来做到这一点,但是出于性能原因,我宁愿这样做。
答案 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
这解决了我的问题。现在一切都按预期返回。 谢谢你的帮助。