2014-01-22 35 views
2

JOIN我想算一筆左邊的條目加入MySQL,但我總是得到一個錯誤留下了COUNT收到錯誤

SELECT g.uid,g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT (g.uid) as hits 
FROM jos_findme_gallery as g 
LEFT JOIN jos_findme as u ON g.uid= u.user_id 
LEFT JOIN jos_alpha_userpoints as a ON g.uid= a.userid 
WHERE u.avatar IS NOT NULL 
ORDER BY g.uid asc 

功能db1140411-dualda.COUNT不存在。檢查參考手冊中的'函數名稱分析和解析'部分

任何想法?

+0

你需要將它們組由g.uid爲COUNT函數工作 – TheSavage

+0

會容易得多,如果你從查詢顯示您的表格,數據和預期的結果。 – MrSimpleMind

回答

1

您需要按某種方式分組。 COUNT是一個聚合函數。

SELECT g.uid,g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT(1) as hits 
... 
GROUP BY g.uid 
ORDER BY ... 

另外,爲什麼你有2個左連接?你想從哪兩個連接表中統計行數?使用聚合功能時

+0

[其實,你不在MySql。](http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html)它也會是一個不同的錯誤信息.. –

+0

你不會但結果是未定義的。 –

2

應該使用GROUP BY,但你要因爲COUNT(之間的空間的此特定錯誤。

From the MySQL Docs:

該函數調用的需求與名稱之間沒有空格 寫入和括號僅適用於有特殊的考慮內置 功能。 COUNT就是這樣一個名字。

爲了解決這個問題,擺脫了空間的...扔在GROUP BY以明確:

SELECT 
    g.uid, 
    g.datei, 
    u.id, 
    u.avatar, 
    u.avatarapproved, 
    a.points, 
    COUNT(g.uid) as hits 
FROM jos_findme_gallery as g 
LEFT JOIN jos_findme as u ON g.uid= u.user_id 
LEFT JOIN jos_alpha_userpoints as a ON g.uid= a.userid 
WHERE u.avatar IS NOT NULL 
GROUP BY 
    g.uid, 
    g.datei, 
    u.id, 
    u.avatar, 
    u.avatarapproved, 
    a.points 
ORDER BY g.uid asc 
0

我覺得有數量和你的票,因爲我們可以在看到之間沒有空格其他例子。

0

試試這個:

SELECT g.uid, g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT(g.uid) AS hits 
FROM jos_findme_gallery AS g 
LEFT JOIN jos_findme AS u ON g.uid= u.user_id 
LEFT JOIN jos_alpha_userpoints AS a ON g.uid= a.userid 
WHERE u.avatar IS NOT NULL 
GROUP BY u.id 
ORDER BY g.uid ASC