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