2013-04-01 28 views
0

我正在嘗試編寫一個查詢,它將查找我們所有的sku選項都是下拉菜單和色板的混合選項。分組重複記錄時的MySQL查詢

我們有一張儲存此信息的表格,但設置有點不可思議。對我很重要的列是。

------------------------------------------- 
sku | option_flag | swatch_flag | sequence 
------------------------------------------- 

可以存在多個sku的重複記錄,因爲其他列根據sku的設置而變化。

我的預期結果如下所示。

------------------------------------------- 
sku | option_flag | swatch_flag | sequence 
------------------------------------------- 
aa001 |  YES | NO  |  1 
------------------------------------------- 
aa001 |  YES | YES  |  2 
------------------------------------------- 
aa001 |  YES | NO  |  3 
------------------------------------------- 

到目前爲止,我有這個,它是由sku分組,但它仍然包括no爲option_flag。也許不是通過SKU分組的,是有辦法讓通過序列排序是1 3月2日至二月一日3等

SELECT a.* 
FROM sku_parent_attributes AS a 
INNER JOIN 
    (SELECT sku 
    FROM sku_parent_attributes 
    WHERE option_flag = 'yes' 
    GROUP BY sku 
    HAVING COUNT(sku) = 3) AS b 
ON a.sku = b.sku; 
+0

爲什麼你一直在使用'INNER JOIN'?如果你從同一張桌子上拉出,爲什麼不把條件包含在你的選擇中? 'SELECT a。* FROM sku_parent_attributes WHERE option_flag ='YES'...' –

+0

我只是想找點工作。我不必是內部聯接。 –

+0

@JoshLesch你能提供一些樣本數據嗎?你的問題對我來說並不清楚 – fthiella

回答

0

試試這個:

SELECT a.*,b.sku 
FROM sku_parent_attributes AS a 
INNER JOIN 
sku_parent_attributes as b 
ON a.sku = b.sku 
GROUP BY b.sku 
HAVING COUNT(b.sku) = 3 

裏面的WHERE條件完整的查詢不僅在子查詢中。