2012-11-14 52 views
0

我有一個準系統搜索系統,它變得更加複雜,並且有很多奇怪的問題正在進行。我怎樣才能重寫這個搜索查詢更準確和高效重寫搜索查詢

tbl_notes表只有course的ID,但要將其添加到搜索我用一個內部查詢也檢查它。這有很多問題,我不太強大的任何幫助將不勝感激。

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