-1

これは選択クエリです...

   $q = "SELECT
        tcs.tutor_id AS tid,
        tcs.category_id AS cid,
        tcs.subject_id AS sid,
        GROUP_CONCAT( DISTINCT s.subjects SEPARATOR ', ') AS subjects,
        t.tutor_name AS tname,
        t.tutor_code AS tcode,
        DATE_FORMAT(t.registration_date, '%b %D, %Y') AS date,
        t.qualification AS qualifi,
        GROUP_CONCAT( DISTINCT o.option_name SEPARATOR ', ') AS tutor_option,
        timg.image_name AS img,
        city_name AS city,
        d.district_name AS district
   FROM tutor_category_subject as tcs
        INNER JOIN subject AS s ON tcs.subject_id = s.subject_id
        INNER JOIN tutor_option AS toption ON toption.tutor_id = tcs.tutor_id
        INNER JOIN options AS o ON toption.option_id = o.option_id
        INNER JOIN tutors AS t ON tcs.tutor_id = t.tutor_id
        INNER JOIN address ON address.address_id = t.address_id
        INNER JOIN city ON city.city_id = address.city_id
        INNER JOIN district AS d ON d.district_id = city.district_id
        LEFT JOIN tutor_images AS timg ON timg.tutor_id = tcs.tutor_id AND timg.image_type = 'profile'
   WHERE s.subjects LIKE '%$subject%'
   GROUP BY tcs.tutor_id";

このクエリは現在機能しています..今、問題が見つかりました。それは……非常に多くの科目が 1 人の家庭教師に割り当てられている可能性があります。検索結果を表示するには、検索キーワードを使用して家庭教師に関連するすべての科目を選択する必要があります。このクエリの検索キーワードは「$subject」です。このクエリは、指定されたキーワードに類似したチューターの科目のみを選択します。たとえば、ユーザーが「ビジネス」などのキーワードを指定して、「ビジネス スタディ、ビジネス アカウンティングなどのみ」などの科目をチューターに選択するクエリを実行するとします。したがって、このクエリで他の件名も選択する必要があります..誰か助けてもらえますか?

ありがとうございました。

4

1 に答える 1

0

私は MySQL の第一人者ではありませんが、選択する必要はないと思います。

 tcs.category_id AS cid,
 tcs.subject_id AS sid,

distinctまた、キーワードを使用する必要があります

SELECT distinct
    tcs.tutor_id AS tid,
    GROUP_CONCAT( DISTINCT s.subjects SEPARATOR ', ') AS subjects,
    t.tutor_name AS tname,
    t.tutor_code AS tcode,
    DATE_FORMAT(t.registration_date, '%b %D, %Y') AS date,
    t.qualification AS qualifi,
    GROUP_CONCAT( DISTINCT o.option_name SEPARATOR ', ') AS tutor_option,
    timg.image_name AS img,
    city_name AS city,
    d.district_name AS district
FROM tutor_category_subject as tcs
    INNER JOIN subject AS s ON tcs.subject_id = s.subject_id
    INNER JOIN tutor_option AS toption ON toption.tutor_id = tcs.tutor_id
    INNER JOIN options AS o ON toption.option_id = o.option_id
    INNER JOIN tutors AS t ON tcs.tutor_id = t.tutor_id
    INNER JOIN address ON address.address_id = t.address_id
    INNER JOIN city ON city.city_id = address.city_id
    INNER JOIN district AS d ON d.district_id = city.district_id
    LEFT JOIN tutor_images AS timg ON timg.tutor_id = tcs.tutor_id AND timg.image_type = 'profile'
WHERE s.subjects LIKE '%$subject%'
GROUP BY tcs.tutor_id
于 2012-10-31T17:49:12.257 に答える