0
我有一个SQL问题,我希望有人可以帮助。购物篮:带选项的产品,如何检查组合是否存在?
在我的网站上,有人可以订购产品,然后选择该产品的选项,例如他们买了一辆车,还有诸如轮胎,立体声系统等选项。客户可以将多个项目添加到自己的篮子相同的主项目(汽车),但后来它不同的选项,如:
车,倍耐力,B &Ø 汽车,米其林,B &Ø
我有这个DB结构来实现这一目标:
orders
----------
order_ref
total
orders_parts
------------
id
order_ref
part_id
quantity
orders_parts_options
--------------------
id
option
orders
------
12345 1000.01
orders_parts
------------
1001 12345 Audi 1
1002 12345 Audi 1
orders_parts_options
--------------------
1001 michelin
1001 b&o
1002 pirelli
1002 b&o
所以在这里你可以看到我有两个奥迪在我的购物篮,一个与米其林,一个与倍耐力,都为B & o音频系统。我的问题;假设再次打电话给该订单添加项目到购物篮,例如,另一个与米其林和奥迪奥迪& O,我需要什么SQL来获得1001的orders_parts.id?
我想出了这个有点废话的:
SELECT op.id FROM orders_parts op
INNER JOIN orders_parts_options opo ON (op.id = opo.id)
WHERE op.order_ref = 12345 AND (opo.option = 'michelin' OR opo.option = 'b&o')
,但我得到这个结果
1001
1001
1002
从
。我猜我需要将它聚合起来,并有一个计数= 2,但只是不能解决。任何人都可以帮助我更聪明吗?
(只是为了增加,数据库在现实生活中正常化,但为了清晰起见,我只有全文文本值)。
啊哈,谢谢,只是需要加入具有n = 2,我得到了我以后的ID,因为我只想要它有两个指定选项的ID。 – BigMeat 2014-11-08 14:50:47