1

mysql データベースから情報を取得しようとしています。次のテーブルがあります。

資格(資格ID、資格名、個人ID、ステータス)

住所(addressid, addressline1,city,province,areacode,personid)

スコア (scoreid、score.choices、personid、jobid)

次の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;

これは他のすべてで機能するようですが、州を西ケープ州に限定するものではありません。

4

2 に答える 2

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;
于 2013-08-27T08:56:28.207 に答える
0

リレーションを定義する必要があります。あなたの例では、アドレスがスコアまたは資格にどのように関連しているか、システムにはわかりません。とを追加するGROUP BY score.personidAND score.personid = address.personidscore.personid = qualifications.personid問題が解決する場合があります。

また、JOINS基本的に同じことを行うので、おそらくより効率的です。

于 2013-08-27T09:05:24.017 に答える