【问题标题】:Select different fields from more than one table in SQL Server using Inner Join使用内部联接从 SQL Server 中的多个表中选择不同的字段
【发布时间】:2013-06-26 19:08:24
【问题描述】:

这不会显示结果

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)

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

请帮忙....

谢谢...

【问题讨论】:

  • 检查您加入员工和特许经营。您可能需要一些左连接。
  • @kostasch。是的,这是问题......我把所有的都作为左连接而不是内部......谢谢......

标签: sql-server join inner-join


【解决方案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

【讨论】:

    【解决方案2】:

    看来您的数据库设计很差。您应该有一个用户表,然后是有关学生、员工或特许经营权的任何细节的相关表。您的问题是,没有人可能同时在员工、学生和特许经营中。您很可能需要对所有这三个表进行左连接。

    【讨论】:

    • 我也有同样的情况....我的问题出在左边,但我只使用了 INNER....我得到了答案...
    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 2011-07-10
    • 2019-01-20
    • 2016-04-08
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多