2012-05-25 59 views
-1

如何使這個語法的工作原理:MySQL查詢兩個表不同的列查找

SELECT * 
FROM 
    uploads, 
    audienceuploadassociation 
WHERE 
    uploads.member_id = '1' 
    AND uploads.member_school_id='1' 
    AND subject = 'Maths' 
    AND uploads.upload_id = audienceuploadassociation.upload_id 
    AND topic = 'Integers' 
    AND year IN(7, 8, 9) 
    AND audienceuploadassociation.audiencename LIKE (Parents, Teachers, Community) 
+0

你能告訴我們你面臨什麼問題,什麼是表格結構,表格中的數據是什麼以及需要的輸出是什麼? – JHS

回答

3

LIKE條款是錯誤的。我懷疑你打算使用an IN() clause代替:

AND audienceuploadassociation.audiencename IN ('Parents', 'Teachers', 'Community') 

如果你想與LIKE匹配部分字符串,則需要在()組一起OR它們,如:

AND (
    audienceuploadassociation.audiencename LIKE 'Parents%' 
    OR audienceuploadassociation.audiencename LIKE 'Teachers%' 
    OR audienceuploadassociation.audiencename LIKE 'Community%' 
) 

注此外,您正在使用的隱式連接語法(以逗號分隔的表格)已被棄用,以支持明確的JOIN

SELECT 
    uploads.*, 
    audienceuploadassociation.* 
FROM 
    /* Explicit JOIN with ON clause */ 
    uploads 
    JOIN audienceuploadassociation ON uploads.upload_id = audienceuploadassociation.upload_id 
WHERE 
    uploads.member_id = '1' 
    AND uploads.member_school_id='1' 
    AND subject = 'Maths' 
    AND topic = 'Integers' 
    AND year IN(7, 8, 9) 
    AND audienceuploadassociation.audiencename IN ('Parents', 'Teachers', 'Community') 

最後,我會建議明確指定你想要的列而不是做SELECT *,所以你讓他們在一個確定的順序,謹防加入後其他列的,你不要在此查詢需要:

SELECT 
    uploads.upload_id, 
    uploads.other_column, 
    uploads.topic, 
    audienceuploadassociation.audiencename, 
    ... 
    ... 
+0

讓我試試這個,會得出結果。謝謝 –

+0

很棒!!!!!這解決了所有問題:)謝謝先生。 –

0

這是行得通嗎?

SELECT * 
FROM 
    uploads, 
    audienceuploadassociation 
WHERE 
    uploads.member_id = '1' 
    AND uploads.member_school_id='1' 
    AND subject = 'Maths' 
    AND uploads.upload_id = audienceuploadassociation.upload_id 
    AND topic = 'Integers' 
    AND year IN(7, 8, 9) 
    AND audienceuploadassociation.audiencename IN ('Parents', 'Teachers', 'Community');