从sql db中的多个表中提取数据

时间:2014-04-24 16:54:29

标签: java sql sql-server join

您好我有一个由2个表组成的数据库

userData表

userID  |  userPass | Firstname |  Surname | Status | IPAddress
--------------------------------------------------------------  
110110  |  123456   | James     |  Jackson | Online |  11.112.1

联系表

    userID  |  contactID |
    --------------------- 
    110110  |  112114    |
    112112  |  110110    |
    110110  |  112444    |

第一个表是userdata表,我正在使用我的java应用程序进行登录。我还有另一个存储用户联系人的表,我正在尝试编写一个查询,允许我接受用户联系并通过JList中的名字,姓氏和ID显示它们,我非常困惑任何帮助将不胜感激。我看了一下内连接,但似乎越来越卡住了。如何构建查询以获取我需要的数据?我也试图单独查询以仅显示在线用户。

好的,我设法使用以下查询:

SELECT userName
FROM userdata, contacts
WHERE userID = "110110" AND userData.userID = contacts.contactID

这是从联系人表中获取用户ID“110110”,以及对应并返回联系人的userName(来自用户数据表)的contactID。我遇到了一个新问题,其中userID 112112将110110添加为朋友。因为这个112112在userID列中,而110110在contactID列中(contacts表)。这不应该是一个问题,因为它仍然显示它们是联系人。但我试图修改我的查询,也给我用户ID 112112的名称。有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

  

姓名,姓名和身份证件

假设您使用ID表示contactID,否则应包含其他联接以从“联系人”中获取数据。

select u.Firstname, u.Surname, uc.contactID from User u 
inner join UserContact uc on u.userID = uc.userID;

More on joins

答案 1 :(得分:0)

获取所有用户 -

select Firstname, Surname, u.contactID from userdata u inner join usercontacts uc 
on u.userID = uc.userID order by Firstname, Surname, u.userID 

获取在线用户 -

select Firstname, Surname, u.contactID from userdata u inner join usercontacts uc 
on u.userID = uc.userID where status = 'Online' order by Firstname, Surname, u.userID