2011-12-04 78 views
0

我有一個簡單的關係,其中類別和子類別通過parent_id進行區分,類別具有parent_id 0和子類別具有category_id作爲其parent_id。我想要做的是選擇第一個類別的第一個子類別。選擇分號

我使用

SELECT CAT_ID FROM member_product_cat WHERE cat_parent_id!= 0 HAVING cat_parent_id =分鐘(cat_parent_id)LIMIT 1

,但它給了我一個error.I知道我可以通過

SELECT CAT_ID FROM member_product_cat做同樣的WHERE cat_parent_id =(選擇從米 分鐘(cat_parent_id) ember_product_cat其中cat_parent_id!= 0) LIMIT 1

但是,什麼是錯誤的,我第一種方法?不是它這個,我們having子句?

問候 人士Himanshu夏爾馬

+0

什麼錯誤?錯誤日誌始終是關鍵... – greenLizard

+0

SQL錯誤:1054在'having子句'中的未知列'cat_parent_id' 這是錯誤 –

回答

1

加入HAVING子句SQL,因爲WHERE關鍵字無法與合計函數一起使用。所以你根本不需要那裏。

+0

所以不是我在這裏做什麼?我正在使用具有aggergrate函數。或者你的意思是我可以用它像具有分鐘(ID)= 2或東西 –

+0

SELECT列名,的aggregate_function(列) FROM TABLE_NAME WHERE列名操作者值 GROUP BY列名 HAVING的aggregate_function(列)操作符值以上的標準模板使用HAVING的地方。 – user618677

+0

@ techie_28,在關係代數中我們有Select和其他,而你的Where只是一個Select。你的目標是選擇一個特定的元組,並從你選擇的元組中選擇cat_id。那麼這裏有什麼真正的聚集。並且注意WHERE不是跟着HAVING .. WHERE是條件語句已經。 – user618677

0

嘗試:

 
SELECT cat_id FROM member_product_cat WHERE cat_parent_id <> 0 where cat_parent_id=(SELECT min(cat_parent_id) from member_product_cat) LIMIT 1 
0

我認爲,所有你需要的只是

SELECT cat_id FROM member_product_cat 
WHERE cat_parent_id !=0 
ORDER BY cat_parent_id, cat_id LIMIT 1 
0

當使用having沒有group by即使在地方聚集功能,having條款有點就像一個where條款..

快速潛入文檔:

http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html

報價:

Standard SQL does not permit the HAVING clause to name any column not found in the GROUP BY clause unless it is enclosed in an aggregate function. MySQL permits the use of such columns to simplify calculations. This extension assumes that the nongrouped columns will have the same group-wise values. Otherwise, the result is indeterminate.

我希望這將有助於在某種程度上