在我的Opencart商店里,我有很多产品可以选择颜色和尺寸。 有时由于从excel导入,颜色选项只有一个值,例如白。
我想远程选择optionvalue只有一个选项的所有选项。
信息存储在两个表中:oc_product_option_value
和oc_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
它为我提供了所有只有一个optionvalue的product_id,我可以删除它。 但我还需要从表oc_product_option中删除相同的product_id。 如何选择oc_product_option中的所有产品,这些产品在oc_product_option_value中只有一个optionvalue。
我试过了,但它没有工作:
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)
尝试使用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
答案 1 :(得分: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。不只是单身。