我在提取某些數據時遇到問題。
的表我有(用於測試目的):搜索具有多個條件的產品
產品:
product_id | product_name ----------------------------- 1 | product 1 2 | product 2 3 | product 3
屬性:
product_id | attribute_id | attribute_value ------------------------------------------------------- 1 | 1 | lorem 1 | 2 | ipsum 2 | 1 | lorem 2 | 2 | doler 3 | 1 | sit 3 | 2 | ipsum
我想找到具有存儲在attribute_id 1 LOREM和存有存儲產品在屬性_id 2中。
如果我使用此查詢,
SELECT attributes.attribute_id, attributes.attribute_value, products.product_id FROM products Inner Join attributes ON products.product_id = attributes.product_id WHERE (attributes.attribute_id = 1 AND attributes.attribute_value = 'lorem') OR (attributes.attribute_id = 2 AND attributes.attribute_value = 'ipsum')
我得到:
attribute_id | attribute_value | product_id ---------------------------------------------------------- 1 | lorem | 1 2 | ipsum | 1 1 | lorem | 2 2 | lorem | 3
但我真的希望得到這樣的結果:
attribute_id_1 | attribute_id_2 | attribute_value_1 | attribute_value_2 | product_id ---------------------------------------------------------- 1 | 2 | lorem | ipsum | 1
或者只是PRODUCT_ID 1的結果。
我可以讓它與下一個查詢一起工作,但在生產中(有大量的數據和更多的連接),這是慢的方法。
SELECT products.product_id FROM products Inner Join attributes ON products.product_id = attributes.product_id WHERE attributes.attribute_value = 'ipsum' AND products.product_id IN ( SELECT products.product_id FROM products Inner Join attributes ON products.product_id = attributes.product_id WHERE attributes.attribute_value = 'lorem' )
我希望你明白我在做什麼。
有人可以幫我嗎?
謝謝!
這可能工作..如果Brian的回答不起作用,我會試試這個。謝謝! – Johan 2010-07-26 11:20:29
沒問題:)祝你好運... – pdbartlett 2010-07-26 11:24:13
嗯,因爲我的生產設置比我的例子稍微複雜一點,所以你的答案是有效的,對我來說是最好的選擇。再次感謝。 – Johan 2010-07-26 11:54:35