サイト検索用のクエリを作成しようとしています。このクエリで行う必要があるのは、検索キーワード (チューター、研究所、科目、都市) に従って 4 つの主要な列を選択することです。キーワードを入力するとき、クエリはこの 4 つのテーブルをチェックし、この 4 つのカテゴリの下に検索結果を表示する必要があります。検索結果を表示するとき、意味のある検索結果を作成するためにいくつかの値を追加する必要があります。例: 検索結果として家庭教師カテゴリの下に家庭教師を表示すると考えてください。彼/彼女の名前、都市、プロフィール画像などを表示する必要があります。
このようなものです。
**Tutors**
tutor's name
city
profile image
**institutes**
institute's name
city
profile image
**subjects**
subject name
category name which belong this subject
**cities**
city name
district name which city belong etc...
こんな感じでやってみました
$q = "SELECT keyword, col, city_name, image_name, tutor_code
FROM (
SELECT tutor_name AS keyword, 'Tutors' AS col, IFNULL(c1.city_name, '') city_name, IFNULL(ti.image_name, '') image_name, tutor_code FROM tutors AS t
LEFT JOIN address a ON t.address_id = a.address_id
LEFT JOIN city c1 ON a.city_id = c1.city_id
LEFT JOIN tutor_images ti ON t.tutor_id = ti.tutor_id AND ti.image_type = 'profile'
UNION
SELECT subject_name AS keyword, 'Subject' AS col, '' city_name, '' image_name, '' tutor_code FROM subjects
UNION
SELECT city_name AS keyword, 'City' AS col, '' city_name, '' image_name, '' tutor_code FROM city
UNION
SELECT institute_name AS keyword, 'Institute' AS col, '' city_name, '' image_name, '' tutor_code FROM institutes AS i
LEFT JOIN address a ON i.address_id = a.address_id
LEFT JOIN city c2 ON a.city_id = c2.city_id
LEFT JOIN institute_images ii ON i.institute_id = ii.institute_id AND ii.image_type = 'profile'
) s
WHERE keyword LIKE '%$queryString%'
LIMIT 10";
このクエリは約 50% 機能しますが、100% で機能することはありません。問題は、機関カテゴリの下に都市名とプロフィール画像が表示されず、都市と科目フィールドの下に地区名とカテゴリ名が表示されないことです。また、この種のクエリは効果がなく、時間とリソースを無駄にしていませんか?
ありがとうございました。