2015-06-17 46 views
0

我有一個項目數據庫,每個項目都有不同數量的屬性的項目。 MySql是否有可能只在運行搜索時返回具有一定數量匹配(不屬性)的項目?MySQL只返回有N多的屬性相匹配

例子:我在尋找一個輪子是紅色的,有一個輪胎的任何項目。 即使它們具有更多屬性,它也會返回具有這三個匹配項的所有項目,並自動排除小於3個匹配項的任何項目。

我曾嘗試與計數+ GROUP BY打HAVING +,但我無法把一個有意義的工作代碼。在我花更多時間在這之前,我想知道它是否可能。

表設計

ID ITEM PROPERTY 
1 1 red 
2 1 wheel 
3 1 tire 
4 2 red 
5 2 wheel 
6 2 tire 
7 2 lamp 
8 3 red 
9 3 wheel 
10 4 red 

我想它有group byhaving退貨項目1和2

+0

我想不出一個簡單的方法來爲一個大的N做到這一點,但如何像'SELECT * from表where((車輪> 0)+(顏色=「紅色」)+(輪胎> 0))> = 3' ...是否有效? – C8H10N4O2

回答

2

你會做到這一點。你真的沒有提供有關數據結構的信息,但其基本思想是:

select ip.item 
from design ip 
where ip.property in ('wheel', 'red', 'tire') 
group by ip.item 
having count(distinct ip.property) = 3; 
+0

嗨戈登,我添加了基本的表格設計和一個樣本數據集。謝謝! – Sandor

+0

你介意用上面的示例數據集來調整你的代碼嗎?謝謝! – Sandor

+0

感謝您的編輯。 「ip」代表什麼以及它爲什麼需要?正如你可以看到我的MySql知識不是最好的。 – Sandor