2016-09-29 122 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 

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