2017-12-19 3 views
0

私はcsvのようなカテゴリーフィールドを持っています1,3,5と私はテーブルの他のカテゴリと一致したい(1,2,3,4)、それは瞬間in cluaseを使用していますが、複数のカテゴリがある場合はこれが機能しません。csvフィールドマッチングではどこに

Job.jobcategory_alias in (SELECT p_alias FROM job_categories WHERE p_id = 10225 or p_parent_id = 10225 or p_id = 10237 or p_parent_id = 10237) 

jobcategory_aliasは1のようにただ一つの値を持っていますが、それは区切ら1,2コンマのような2つの値を持っている場合は失敗した場合、それは動作します。

私はデータベースの構造を変更できません。

複数のカテゴリに一致するクエリを作成するにはどうすればよいですか?

+1

データモデルを修正して、カンマ区切りリストを文字列に格納しないようにします。 –

+0

私はテーブルを設計していませんでした。私は構造を変更できません。 – tsukimi

答えて

0

使用find_in_set()

find_in_set(Job.jobcategory_alias, 
      (SELECT p_alias 
      FROM job_categories 
      WHERE p_id IN (10225, 10237) OR p_parent_id IN (10225, 10237) 
      ) 
      ) > 0 

これは、ほとんどの1行でサブクエリが返すことを想定しています。

+0

私の場合、サブクエリは複数の行を返します。 – tsukimi

+0

GROUP_CONCATを使用して1行になりました。 find_in_setは、最初のパラメータに複数の値を使用できますか?単一の値の例のみ表示されます – tsukimi

+0

たとえば、これは0を返し、find_in_set( 'a、b'、 'a、b、c、d')を選択します。 – tsukimi

関連する問題