0

オプションが区切り記号付きのテーブルに入る複数選択がある***ため、フィールドのデータs_industryは次のようになります。

Social Care***Healthcare***Nursing***

私のSQLクエリは次のようなものです:

SELECT * FROM `jobs` 
LEFT JOIN `employers` ON `jobs`.`user_id`=`employers`.`user_id`
WHERE (`jobs`.`primary_sector` LIKE '%pr%' OR `jobs`.`secondary_sector` LIKE '%pr%') 
OR (`jobs`.`primary_sector` LIKE '%dentist%' OR `jobs`.`secondary_sector` LIKE '%dentist%') OR (`jobs`.`primary_sector` LIKE '%marketing%' OR `jobs`.`secondary_sector` LIKE '%marketing%') 
AND `jobs`.`location` LIKE '%Manchester%' 
AND `jobs`.`archived`='0' 
AND `jobs`.`featured`='0' ORDER BY `jobs`.`job_id

% pr % の両側にスペースを入れることはできますが、***. ***をスペースまたは別の解決策として扱う方法はありますか?

4

1 に答える 1

2

冗談ではありませんが、これは根本的な DB 設計が悪いことを示唆しています。見直せる可能性はありますか?この種のクエリはまさに、データベース コンテンツを正規化する理由です。つまり、テーブルに分割し、t_sectorがルックアップ テーブルになり、ジョブがたとえばt_job_sectorを介してセクター マッピングごとに 1 つのエントリにリンクします。

于 2012-10-15T13:26:16.367 に答える