2013-08-27 78 views
1

我想從mysql數據庫中檢索信息。 我有以下表格:MYSQL從表中選擇多個COLOURS

資格(qualificationid,qualificationname,PERSONID,狀態)

地址(addressid,addressline1,市,省,AREACODE,PERSONID)

得分(scoreid,得分.choices,PERSONID,作業ID)

我用鍵入下面的MySQL語句來檢索數據

SELECT score.personid, qualifications.qualificationname, score.score 
FROM 
Qualifications, Score, Address 
WHERE 
score.jobid=58 
AND 
qualifications.qualificationName ='Human Resource Management' 
AND 
aadress.province ='Western Cape' 
ORDER BY score.score 
LIMIT 0,20; 

這似乎適用於其他一切,但不會將省份限制在西部海角。

請幫助,我哪裏錯了?

+0

這個省就是「西開普」嗎?任何有空間或其他字符的機會?你可以嘗試:UPPER(RTRIM(LTRIM(aadress.province)))= UPPER(RTRIM(LTRIM('Western Cape')));或者aadress.province LIKE'%Western Cape%'。希望這有助於 –

+0

看起來像一個錯字:address.province,而不是aadress.province – aross

回答

2

爲什麼不使用連接?像這樣:

SELECT s.personid, q.qualificationname, s.score 
    FROM Score s 
    INNER JOIN Qualifications q ON q.personid = s.personid AND q.qualificationName ='Human Resource Management' 
    INNER JOIN Address a ON a.personid = s.personid AND a.province ='Western Cape' 
    WHERE s.jobid = 58 
    ORDER BY s.score DESC 
    LIMIT 0,20; 
0

您將需要定義關係。系統現在不知道地址如何與您的示例中的分數或資格相關聯。通過添加一個GROUP BY score.personidAND score.personid = address.personidscore.personid = qualifications.personid您可能會解決您的問題。

另外,使用JOINS可能效率更高,因爲它基本相同。