从单个查询中的三个表中获取数据

时间:2014-09-22 14:52:45

标签: sql sql-server select

我有三张这样的桌子。

USERLOGIN

  userID   userPassword
  c01      chutop
  c02      213jkd

SystemUser

userID      FName     LName    CategoryID
c01         Sidy      Kamal    2 
c02         Bindu     Namal    1
c03         Sandy     Khan     3

SystemUserCategory

CatID  CatType
1      Admin
2      General
3      Librarian

当我在查询中输入userID='c01'userPassword作为chutop时,我想在结果集中获得的是:

userID     FName    LName    catType
c01        Sidy     Kamal    Genaral

我输入的是用户名和密码。我想获得匹配记录的FnameLNamecatType。此外,我将以userID c01的身份登录,输入userID c01,密码为chutop。我想从Fname的{​​{1}}表中检索LnameUser,我想从userID='c01'表中获取catType Category s userID='c01',在这种情况下为2。

这是我尝试过的。

catID

它给了我12条记录而不是1条记录。

任何帮助纠正这个或任何查询帮助都会非常棒。

4 个答案:

答案 0 :(得分:1)

这是我的答案。

SELECT userFName,UserLName,CatName
FROM userLogin INNER JOIN SystemUser ON (userLogin.userID=SystemUSer.userID) INNER JOIN SystemUserCategory ON (SystemUser.userCatID=SystemUserCategory.catID)
WHERE UserLogin.userID='c002' AND UserLogin.userPassword='ryan';

申请必要的用户名和密码。用户ID和密码就是我添加的内容。

答案 1 :(得分:0)

您必须使用内部联接,而不是从多个表中进行选择。

像这样:

select userFName, userLName,catID 
from userLogin UL inner join SystemUser SU 
 on Ul.userId = SU.userId inner join SystemUserCategory SUC 
 on SU.CatID = SUC.CatID

答案 2 :(得分:0)

select ul.UserId,su.FName,su.LName,suc.CatType 
from UserLogin ul
inner join SystemUser su on ul.UserId = su.UserId
inner join SystemUserCategory suc on su.CategoryId = suc.CatId
where ul.userId = 'c01' and ul.[Password] = 'chutop'

enter image description here

答案 3 :(得分:-2)

SELECT userFName,userLName,catID
FROM userLogin,SystemUser,SystemUserCategory
WHERE userLogin.userID ='c001'
AND userLogin.userPassword ='chath'
AND SystemUser.userID = userLogin .userID
AND ANDUserUser.CategoryID = SystemUserCategory.CategoryID