我有一个包含两个表的数据库:一个是人的表,指出他们从事的运动;另一个是人的表。第二个是体育项目表格,其中显示了代表每个ID的体育项目。
人表
id name sport1 sport2
100 John 0 3
101 Max 1 3
102 Axel 2 4
103 Simon 4 2
运动桌
sportid sportn
0 Football
1 Baseball
2 Basketball
3 Hockey
4 Swimming
我想做一个查询,向我展示Sport Max的做法,就像这样
id name sport1 sport2
101 Max Baseball Hockey
到目前为止,我已经知道了
select p.id, p.name, s.sportn, s.sportn
from persons as p, sports as s
where p.sport1 = s.sportid and p.id = 101
这向我展示了两次第一项运动,所以我不知道从这里去哪里。
您的查询存在问题,您只可以使用联接sports
一次表p.sport1
。
此查询应为您提供所需的信息:
SELECT p.id, p.name, s1.sportn AS sport1, s2.sportn AS sport2
FROM persons AS p
JOIN sports AS s1 ON p.sport1 = s1.sportid
JOIN sports AS s2 ON p.sport2 = s2.sportid
WHERE p.id = 101
您还可以阅读sql join,以帮助您更好地了解此解决方案。
最后,如果您确实需要使用当前语法,这是更正后的查询:
SELECT p.id, p.name, s1.sportn AS sport1, s2.sportn AS sport2
FROM persons AS p, sports AS s1, sports AS s2
WHERE p.sport1 = s1.sportid AND p.sport2 = s2.sportid AND p.id = 101
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句