2012-12-19 88 views
0

我使用的MySQL 5.1SQL,where子句不適用

這裏是我的要求,我 要算誰是和0至14歲具有啓用帳戶的用戶數。

SELECT COUNT(DISTINCT user.id) AS user 
FROM profile, user 
WHERE (
profile.age 
BETWEEN 0 
AND 14 
) 
AND user.enabled =1 

user.enabled=1條件的工作,但不是profile.age BETWEEN 0 AND 14

+4

請提供如何這是不工作的例子。 「age」的數據類型是什麼?你爲什麼要用一個隱式的「交叉連接」而不是顯式的「連接」來連接這些表? –

+0

'profile.age'是一個整數嗎? – luchosrock

+0

我的表格用戶有800個條目,並且有759個啓用的帳戶。我的請求返回759.年齡列是一個整數。 –

回答

2

您還沒有加入2代表一起,因此只運行兩個笛卡爾乘積。你需要通過一個共同的密鑰加入他們。

事情是這樣的:

SELECT COUNT(DISTINCT user.id) AS user 
FROM profile join user on user.id=profile.user_id 
WHERE (
profile.age 
BETWEEN 0 
AND 14 
) 
AND user.enabled =1 
+0

很好用。謝謝 :) –