2011-01-22 20 views
1
SELECT c.noreg AS noreg, count(*) AS jumlah 
FROM kamar a, reservasi b, register c, identitas_psn d, sub_unit_kamar e 
WHERE a.idkamar = b.kamar 
AND b.noreg = c.id_reg_lengkap 
AND c.norm = d.norm 
AND c.idunit = e.id_subunit 
AND c.noreg NOT 
IN (

SELECT noreg 
FROM register_keluar 
) 
AND (
c.idunit LIKE '20%' 
) 
AND jumlah > 1 
GROUP BY noreg 
ORDER BY jumlah DESC 

//錯誤是:AND jumlah> 1如何使這個MySQL查詢子工作

回答

2

移動jumlah > 1HAVING條款,如:

... 
GROUP BY ... 
HAVING jumlah > 1 
ORDER BY ... 

http://en.wikipedia.org/wiki/Having_(SQL):

SQL中的HAVING子句指定 SQL SELECT語句應該只有 返回聚合值 滿足指定條件的行。

0

嘗試:

SELECT c.noreg AS noreg, count(*) AS jumlah 
FROM kamar a, reservasi b, register c, identitas_psn d, sub_unit_kamar e 
WHERE a.idkamar = b.kamar 
AND b.noreg = c.id_reg_lengkap 
AND c.norm = d.norm 
AND c.idunit = e.id_subunit 
AND c.noreg NOT 
IN (SELECT noreg FROM register_keluar AND c.idunit LIKE '20%') 
AND jumlah > 1 
GROUP BY noreg 
ORDER BY jumlah DESC 
0

當你結合的任何列的選擇和聚合別名(在你的例子:COUNT(*)作爲jumlah),然後你打算使用該聚合別名( jumlah)在你的查詢的某個地方,用GROUP BY的條件,你需要使用一個HAVING條件後面那個對應的GROUP BY。