0

必要最小限の検索システムがさらに複雑になり、多くの奇妙な問題が発生しています。この検索クエリをより正確かつ効率的に書き直すにはどうすればよいですか

tbl_notesテーブルには の ID しかありませんが、それcourseを検索に追加するために、内部クエリも使用してチェックしました。これには多くの問題があり、私はmysqlがあまり得意ではありません。助けていただければ幸いです。

TBL_NOTES:

[id][user_id][note_title][note_title][topic][course][note]

TBL_COURSES:

  [id][user_id][course_name]

   SELECT * FROM `tbl_notes` 
    WHERE `active` = '0' 
    AND `valid_note` = '0' 
    AND `user_id` = '33' 
    AND `note` LIKE '%biology%' 
    OR `topic` LIKE '%biology%' 
    OR `note_title` LIKE '%biology%' 
    OR `course` IN (SELECT `id` FROM tbl_courses WHERE `course_name` LIKE '%biology%' AND user_id = '33') 
    ORDER BY id DESC LIMIT 0, 6

ありがとう

4

2 に答える 2

2

私は次のように書きます:

SELECT
  DISTINCT n.*
FROM
  `tbl_notes` n left join `tbl_courses` c
  on n.course = c.id
WHERE
  n.`user_id` = '33'
  AND n.`active` = '0' 
  AND n.`valid_note` = '0'
  AND (n.`note` LIKE '%biology%' 
       OR n.`topic` LIKE '%biology%' 
       OR n.`note_title` LIKE '%biology%' 
       OR c.`course_name` LIKE '%biology%') 
ORDER BY n.id DESC LIMIT 0, 6
于 2012-11-14T06:54:37.123 に答える
1

多分 ?:

  SELECT * FROM `tbl_notes` 
    WHERE `active` = '0' 
    AND `valid_note` = '0' 
    AND `user_id` = '33' 
    AND 
   (`note` LIKE '%biology%' 
    OR `topic` LIKE '%biology%' 
    OR `note_title` LIKE '%biology%' 
    OR `course` IN (SELECT `id` FROM tbl_courses WHERE `course_name` LIKE '%biology%' AND user_id = '33') 
    )
    ORDER BY id DESC LIMIT 0, 6
于 2012-11-14T06:41:45.387 に答える