在SQL Server 2008中连接多个表会导致错误
我正在编写一个连接3个表的查询,我有以下表:在SQL Server 2008中连接多个表会导致错误,sql,sql-server,inner-join,where,Sql,Sql Server,Inner Join,Where,我正在编写一个连接3个表的查询,我有以下表: Apn[ID、QualHolderID、RecvDate、条形码] QualHolder[身份证、姓氏、全名、出生日期、重新统计ID、性别] Country[ID,Name] Gender[ID,Name] 我编写了以下SQL语句来检索数据: SELECT a.QualHolderID, b.FullName, b.Surname, d.Name, b.DOB, b.ResCountryID, a.RecvDate FROM d
Apn[ID、QualHolderID、RecvDate、条形码]
QualHolder[身份证、姓氏、全名、出生日期、重新统计ID、性别]
Country[ID,Name]
Gender[ID,Name]
SELECT
a.QualHolderID, b.FullName, b.Surname, d.Name, b.DOB, b.ResCountryID, a.RecvDate
FROM
dbo.Apn a
INNER JOIN
dbo.QualHolder b ON a.QualHolderID = b.ID
JOIN
dbo.QualHolder c
INNER JOIN
dbo.Gender d ON c.Gender = d.ID
WHERE
b.ResCountryID = 48
但现在我得到了以下错误:
味精102,第15级,状态1,第9行“ID”附近的语法不正确
我认为正确的问题是:
SELECT a.QualHolderID, b.FullName, b.Surname, d.Name, b.DOB, b.ResCountryID, a.RecvDate
FROM dbo.Apn a
INNER JOIN dbo.QualHolder b ON a.QualHolderID = b.ID
INNER JOIN dbo.Gender c ON b.Gender = c.ID
WHERE b.ResCountryID = 48
您不需要两次加入
dbo.QualHolder
表。
试着这样做:
SELECT a.qualholderid,
b.fullname,
b.surname,
d.name,
b.dob,
b.rescountryid,
a.recvdate
FROM dbo.apn a
INNER JOIN dbo.qualholder b
ON a.qualholderid = b.id
INNER JOIN dbo.gender d
ON b.gender = d.id
WHERE b.rescountryid = 48
您的问题在这里
=b.ID JOIN
使用以下查询并执行
SELECT a.QualHolderID, b.FullName, b.Surname, d.Name, b.DOB, b.ResCountryID, a.RecvDate
FROM (dbo.Apn a INNER JOIN dbo.QualHolder b ON a.QualHolderID = b.ID)
INNER JOIN dbo.Gender d ON b.Gender = d.ID
WHERE b.ResCountryID = 48
我建议对您的表使用更有意义的别名!仅仅使用
a、b、c
是混乱的,没有帮助。我会用a
来表示Apn
,qh
来表示QualHolder
,g
来表示Gender
等等。这些别名对任何阅读和研究你的问题的人来说都更加清晰和明显。你没有定义别名c
。