0

partsデータベースにとの 2 つのテーブルがありますproductsproductsテーブルに ID の文字列 (カンマ区切り) を含む列があります。これらの ID は、パーツ テーブルの 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クエリに本当に苦労しています。最初の部分を完了し、パーツ テーブルから ID を取得しました

SELECT * FROM partsWHERE descriptionLIKE '%{$search}%'

最大の問題は、説明列のコンマ区切り構造です。

明らかに、私は PHP でそれを行うことができ、部品テーブルからの結果の配列を作成し、それを使用して製品テーブルで ID を検索し、それらの結果を使用して部品テーブルから行データを (再び) 取得します。あまり効率的ではありません。

私もこれを試しましたが、明らかにここで2つの配列を比較しようとしています.これをどのように行うべきかわかりません.

SELECT * FROM `products` WHERE 
CONCAT(',', description, ',') 
IN (SELECT `id` FROM `parts` WHERE `description` LIKE '%{$search}%')

誰でも助けることができますか?

4

1 に答える 1

0

と の組み合わせを試してみたいと思いLOCATE()ますSUBSTR()CHARINDEX()私は主に、 MySQL のように機能すると思われる MSSQL で作業していますLOCATE()。ぐちゃぐちゃなのは必至です。部品リスト フィールドに可変数の要素がありますか?

于 2013-06-23T06:25:13.583 に答える