2013-08-27 160 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可能效率更高,因为它基本相同。