2012-11-14 6 views
0

저는 더 복잡한 베아 본 검색 시스템을 가지고 있으며 많은 이상한 문제가 있습니다.검색 쿼리를 다시 작성하십시오.

tbl_notes 테이블은 course의 ID 만 가지고 있지만 검색에 추가하려면 내부 쿼리를 사용하여 확인하십시오. 이 문제가 많이 있고 나는 어떤 도움을 주시면 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 

감사

+0

쿼리가 정상적으로 처리됩니다. 문제점은 무엇입니까? 천천히 만? –

+0

테이블과 예상 결과를 써 주시겠습니까? – Freelancer

답변

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 
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 
관련 문제