SQL - 获取两个用户的名字

时间:2012-09-05 07:54:43

标签: mysql sql

我正在尝试从投票表中获取用户名,我无法弄清楚如何同时获得选民的姓名和投票人的姓名。

简化投票表

ID   voteeID    voterID
1    1          2
2    1          3
3    1          4
4    2          1
5    2          3
6    2          4

简化的用户信息表

ID   username
1    Bob
2    Sam
3    Ed
4    Mark

我在哪里:

SELECT votes.voteeID, votes.voterID, userinfo.username
FROM votes
JOIN ???

我正在玩这个联盟,但我有点卡住了。如果我加入了投票者的id到userinfo id,我怎么能得到选民的名字,反之亦然?

数据库:MySQL 5

提前感谢任何帮助甚至提示都会很精彩。

4 个答案:

答案 0 :(得分:4)

尝试这个,

SELECT  b.`username` as Votee_Name,
        c.`username` as Voter_Name
FROM    Votes a
            INNER JOIN UserInfo b
                ON a.voteeID = b.Id
            INNER JOIN UserInfo c
                on a.voterID = c.id

SQLFiddle Demo

答案 1 :(得分:3)

这样的东西
SELECT  v.ID,
        v.voteeID,
        u1.username Votee,
        v.voterID,
        u2.username Voter
FROM    Votes v INNER JOIN
        User u1     ON  v.voteeID = u1.ID INNER JOIN
        User u2     ON  v.voterID = u2.ID

答案 2 :(得分:2)

您需要两次INNER JOIN来获取voteevoter的用户名:

SELECT a.voteeID, a.voterID,
       b.username AS votee_name, c.username AS voter_name
FROM votes a
     INNER JOIN userinfo b
         ON a.voteeID = b.ID
     INNER JOIN userinfo c
         ON a.voterID = c.ID;

答案 3 :(得分:1)

SELECT V.ID作为ID B.username作为Votee_Name,C.username作为Voter_Name   来自投票V.  INNER JOIN UserInfo B ON V.voteeID = B.Id  INNER JOIN UserInfo C on V.voterID = C.id;