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

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

问题描述:

我有三个这样的表。从一个查询中的三个表中获取数据

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 

我输入用户名和密码。我想获得匹配记录的Fname,LNamecatType。此外,我将登录为userID c01,输入userID c01,密码为chutop。我想检索来自UserFnameLnameuserID='c01',我想从CategorycatTypeuserID='c01'小号catID,这是2在这种情况下。

这是我的尝试。

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

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

任何帮助纠正这个或任何查询帮助将是非常好的。

+4

谷歌'SQL连接tutorial' – FuzzyTree 2014-09-22 14:54:43

+0

你真的存储密码以纯文本形式? – Lamak 2014-09-22 14:56:43

+0

您需要指定表格之间的相互关系。看看这个:http://sqlzoo.net/wiki/The_JOIN_operation – jpw 2014-09-22 14:57:08

这里是我的答案。

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'; 

应用必要的用户名和密码。用户标识和密码正是我所添加的。

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

像这样:

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 

SELECT userFName,userLName,CATID
        FROM         USERLOGIN,SystemUser,SystemUserCategory
        WHERE         userLogin.userID ='C001 '
                AND         userLogin.userPassword = 'chath'
                AND         SystemUser.userID = USERLOGIN。用户ID
               和        SystemUser.CategoryID = SystemUserCategory.CategoryID

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