在MysQL中我试图获得某个结果集,但我不确定要研究什么。
我有一张'人'表:
uid(PK),名字,姓氏。
然后我有一个'匹配'表:
matchid,uid1(fk),score1,uid2(fk),score2
我希望我的查询的结果集显示:
matchid,uid1的拳头名称,得分1,uid2的名字,得分2.
我的初学者技能似乎无法得到它, 我的问题是使用第二个uid并将该人的名字显示为结果集中的列而不是id。
我尝试过,就像使用名称和matchid进行测试一样:
Select * From
( Select matches.idmatches, people.FirstName,
From people, matches
Where matches.uid1 = people.uid ) as a
JOIN
(Select matches.idmatches, people.FirstName,
From people, matches
Where matches.uid2 = people.uid ) as b
但是它多次返回每个名字(我有6个条目,它返回36个结果......似乎经历了每个可能的组合)并且匹配不匹配:
uid1 matchid uid2 matchid
Michael 13 Jennii 13
Michael 14 Jennii 13
Michael 15 Jennii 13
Michael 16 Jennii 13
Michael 17 Jennii 13
Michael 18 Jennii 13
Michael 13 Jennii 14
Michael 14 Jennii 14
Michael 15 Jennii 14
Michael 16 Jennii 14
Michael 17 Jennii 14
Michael 18 Jennii 14
Michael 13 Jennii 15
...and so on...... you get the point...
我想要的是:
uid1 matchid uid2 matchid
Michael 13 Jennii 13
Michael 14 Jennii 14
.......and so on..... with no duplicates.
希望一切都有意义,只是不确定如果我正确地制作了表格,那么如果使用连接是正确的方法,如果是这样的话......我真的不明白我是如何得到这个输出的,是什么我做错了。谢谢你。
答案 0 :(得分:1)
为什么不使用:
SELECT matchid, p1.firstname AS firstname1, matches.score1, p2.firstname AS firstname2, matches.score2
FROM matches, people p1, people p2
WHERE matches.uid1 = p1.uid
AND matches.uid2 = p2.uid
答案 1 :(得分:1)
SELECT
p1.firstname AS player1, m.score1,
p2.firstname AS player2, m.score2
FROM matches AS m
INNER JOIN people AS p1
ON m.uid1 = p1.uid
INNER JOIN people AS p2
ON m.uid2 = p2.uid
GROUP BY m.matchid
你会得到:
player1 score1 player2 score2
Alice 12 Bob 13
...