2017-02-15 49 views
1

在我的Opencart商店中,我有許多產品可以選擇顏色和尺寸。 有時由於從excel導入,顏色選項只有一個值,例如白色。當依賴關係的價值基礎上移除兩個表中的記錄

我想遠程所有選項,其中optionvalue只有一個選擇。

該信息存儲在兩個表中:oc_product_option_valueoc_product_option

例如在oc_product_option_value這看起來是這樣的:

product_id option_id 
-------------------- 
66   18 
66   18 
66   17 
67   18 
67   18 
67   17 

所以我想需要與選項17

除去一次66選17和一次67當我使用:

select * from oc_product_option_value group by product_id, option_id having count(*) = 1 

它給我所有的product_id只有一個optionvalue,我可以刪除它。 但我還需要從表oc_product_option刪除相同的product_id。 如何選擇oc_product_option中只有oc_product_option_value中有一個選項值的所有產品。

我試過,但它不工作:

select * from oc_product_option 
where option_id IN (select product_id from oc_product_option_value group by product_id, option_id having count(*) = 1) 
+0

你能報告錯誤嗎? –

+0

沒有錯誤,只是一個空的結果。 –

回答

0

試試這個在option_id

select oc.* from oc_product_option oc 
INNER JOIN (
select option_id,product_id from oc_product_option_value group by product_id, option_id having count(*)=1 
) t on t.option_id=oc.option_id AND t.product_id =oc.product_id 
+0

沒有。得到了一個錯誤: SELECT * FROM oc_product_option 其中option_id IN(由PRODUCT_ID從oc_product_option_value組中選擇option_id,option_id有COUNT(*)ORDER BY'product_id' ASC LIMIT 0,25 –

+0

編輯我的回答,我錯過了一個最後')' –

+0

它讓我獲得了很多結果。隨着 '選擇oc_product_option *其中的product_id中(由PRODUCT_ID選擇oc_product_option_value組的product_id,option_id具有計數(option_id)= 1)' 我還可以得到什麼結果,但我相信它必須是這樣的。 例如,在oc_product_option_value中,我得到614行。在oc_product_option中最後提到的代碼中,我得到了970行。還包括不止一次計數的option_id。 –

0

確定這使我有點接近:

select * from oc_product_option where product_id in (select product_id from oc_product_option_value group by product_id, option_id having count(option_id) = 1) 

這給我所有正確的product_id但顯示所有option_id的product_id。不只是那些單一的。