当值基于依赖性

时间:2017-02-15 16:29:34

标签: mysql

在我的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

它为我提供了所有只有一个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)

2 个答案:

答案 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。不只是单身。