2016-09-29 128 views
0

此代码正常工作WTO对与GROUP BY表和ORDER BY MAX()

SELECT 
    c.id_article, 
    a.titre AS title_article 
FROM comments AS c 
LEFT JOIN articles AS a 
    ON a.id = c.id_article 
WHERE c.hide = 0 
GROUP BY c.id_article 
ORDER BY MAX(c.date) DESC 
LIMIT 0, 6 

但我需要在最后文章评论的用户名。

我试试这个

SELECT 
    c.id_article, 
    a.titre AS title_article, 
    u.nom_utilisateur AS user_name 
FROM comments AS c 
LEFT JOIN articles AS a 
    ON a.id = c.id_article 
LEFT JOIN membres AS u 
    ON c.id_user = u.id 
WHERE c.hide = 0 
GROUP BY c.id_article 
ORDER BY MAX(c.date) DESC 
LIMIT 0, 6 

和不工作...

任何帮助吗?

(对不起我的英文不好...)

+0

什么不工作?有什么错误? –

+0

你想得到什么?你确定评论与文章左边加入吗?评论可以没有文章? – Tobia

+0

我正在尝试从文章中发布的最后一条评论中检索用户名。我的实际功能检索文章列表中的最后评论。 –

回答

0

没有错误消息或说明什么是错了,它是一种很难说,但在任何情况下,你没有包括在GROUP BY声明u.nom_utilisateur

MySQL通常允许这个没有抛出错误,但它可能会导致意想不到的结果。

SELECT 
    c.id_article, 
    a.titre AS title_article, 
    u.nom_utilisateur AS user_name 
FROM comments AS c 
LEFT JOIN articles AS a 
    ON a.id = c.id_article 
LEFT JOIN membres AS u 
    ON c.id_user = u.id 
WHERE c.hide = 0 
GROUP BY c.id_article, u.nom_utilisateur 
ORDER BY MAX(c.date) DESC 
LIMIT 0, 6 
+0

我正在尝试从文章中发布的最后一条评论中检索用户名。 我的实际功能检索文章列表中的最后评论。 –

0

我有一个部分的解决方案。

我使用此代码从文章检索最后意见:

SELECT 
    c.id_article, 
    MAX(c.id) AS last_id_comment, 
    a.titre AS title_article 
FROM comments AS c 
LEFT JOIN articles AS a 
    ON a.id = c.id_article 
WHERE c.hide = 0 
GROUP BY c.id_article 
ORDER BY MAX(c.date) DESC 
LIMIT 0, 6 

和之后而第一选择,我使用此代码为检索来自最后的评论用户名:

SELECT 
    u.nom_utilisateur AS username 
FROM comments AS c 
LEFT JOIN membres AS u 
    ON u.id = c.id_user 
WHERE c.id = :last_id_comment 

不是最好的解决方案,但它的工作。