使用内部联接从SQL Server中的多个表中选择不同的字段

时间:2013-06-26 19:08:24

标签: sql-server join inner-join

这不会显示结果

SELECT IMSLogin.AccountType, IMSLogin.Status, Registration.UsrFLname, Registration.UsrEmail, Employee.EMPID, Students.STUID, Employee.EMPDEPT, Franchise.FrArea, Franchise.FrName 
FROM Registration 
INNER JOIN IMSLogin ON Registration.RegId = IMSLogin.RegId 
INNER JOIN Employee ON Registration.RegId = Employee.RegId 
INNER JOIN Students ON Registration.RegId = Students.RegId 
INNER JOIN Franchise ON Registration.RegId = Franchise.RegId

但如果我在下面给出,将给出正确的结果

SELECT Registration.UsrFLname, Registration.UsrEmail, Students.STUID, Students.Pay_type, IMSLogin.AccountType, IMSLogin.Status 
FROM IMSLogin 
INNER JOIN Registration ON IMSLogin.RegId = Registration.RegId 
INNER JOIN Students ON Registration.RegId = Students.RegId

我的桌子:

Registration(RegId,PK) 
IMSLogin(RegId, FK) 
Students(RegId,FK) 
Franchise(RegId,FK) 
Employee(RegID,FK)

我试图在gridview中显示它,但我需要正确的查询,我不知道如何使用该内连接?

Plz帮助......

...谢谢

2 个答案:

答案 0 :(得分:1)

试试这个 -

SELECT 
       l.AccountType
     , l.[Status]
     , r.UsrFLname
     , r.UsrEmail
     , e.EMPID
     , s.STUID
     , e.EMPDEPT
     , f.FrArea
     , f.FrName 
FROM dbo.Registration r
JOIN dbo.IMSLogin l ON r.RegId = l.RegId 
LEFT JOIN dbo.Students s ON r.RegId = s.RegId 
LEFT JOIN dbo.Employee e ON r.RegId = e.RegId 
LEFT JOIN dbo.Franchise f ON r.RegId = f.RegId

答案 1 :(得分:0)

您的数据库设计似乎很差。您应该有一个用户表,然后是相关表格,以了解有关学生,员工或特许经营的任何细节。你的问题是没有人可能同时在员工,学生和特许经营中。您很可能需要左联接到所有这三个表。