好了,有很多事情在我這裏這麼裸...MySQL的:使用搜索結果(如%搜索%),匹配ID在另一個數據庫中的表
我在數據庫中有兩個表,零件和產品, 我在產品表中有一列有id字符串(逗號分隔)的字符串,這些id是parts表的匹配id。
**parts**
ID | description (I'm searching this part)
-------------------------------
1 | some text here
2 | some different text here
3 | ect...
**products**
ID | parts-list
--------------------------------
1 | 1,2,3
2 | 2,3
3 | 1,2
我真的很苦惱這個SQL查詢。 我已經做了第1部分,得到了ID的從零件表
SELECT * FROM parts
WHERE description
LIKE「%{$搜索}%」
最大的問題是對的逗號分隔結構描述欄。
很明顯,我可以在PHP中做到這一點,從部件表創建一個結果數組,使用它來搜索產品表中的id,然後使用這些結果從部件表中獲取行數據(再次)。效率不高。
我也試過這個,但我顯然想在這裏比較兩個數組,不知道應該怎麼做。
SELECT * FROM `products` WHERE
CONCAT(',', description, ',')
IN (SELECT `id` FROM `parts` WHERE `description` LIKE '%{$search}%')
任何人都可以幫忙嗎?
謝謝。
你應該重構你的數據庫引入一個名爲product_part的表並且有2列product_id,part_id。並擺脫逗號分隔的字段效率低下。 – DevZer0
要添加到DevZer0所說的內容,您要查找的術語是「多對多」或「聯結」表。 [查看](http://en.wikipedia.org/wiki/Junction_table) - 這絕對是你想要在這裏做的。 – mpen
假設這不是一個選項。每個產品都有多個部分,每個部分都與多個產品一起使用,每個部分的數量各不相同。我可以保持這種關係的唯一方法是使用上面的方法。 –