Sql 从不同服务器连接到表
我需要一些帮助 我有两个内部sql Server,一个包含学生信息,另一个包含库存 我想做的是将两者链接在一起,并从“userfile”服务器获取额外的表 下面是我从学生信息中提取的sql的一部分,我知道它是有效的 仅供参考,sql的第一部分是有效的-我确实从sql的第一部分获得了所有的表,但第二部分没有 (及 PupilPersonalDetails.PupilID内部联接[MYSERVERNAME].USERFILE.dbo.com上的 PupilID=用户\文件\用户ID) 非常感谢你的帮助Sql 从不同服务器连接到表,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要一些帮助 我有两个内部sql Server,一个包含学生信息,另一个包含库存 我想做的是将两者链接在一起,并从“userfile”服务器获取额外的表 下面是我从学生信息中提取的sql的一部分,我知道它是有效的 仅供参考,sql的第一部分是有效的-我确实从sql的第一部分获得了所有的表,但第二部分没有 (及 PupilPersonalDetails.PupilID内部联接[MYSERVERNAME].USERFILE.dbo.com上的 PupilID=用户\文件\用户ID) 非常感谢你的帮
SELECT
CurrentPupil.SchoolID AS 'SchoolID',
CurrentPupil.PupilID AS
'PupilID',
PupilPersonalDetails.Surname AS 'Surname',
PupilPersonalDetails.Forename AS 'First_Name',
PupilCurrentSchoolYearGroupLookupDetails.Description AS 'Year_Group'
FROM CurrentPupil
LEFT OUTER JOIN PupilPersonalDetails AS PupilPersonalDetails
ON CurrentPupil.SchoolID = PupilPersonalDetails.SchoolID
AND CurrentPupil.PupilID = PupilPersonalDetails.PupilID
LEFT OUTER JOIN PupilCurrentSchool AS
PupilCurrentSchool
ON CurrentPupil.SchoolID = PupilCurrentSchool.SchoolID
AND CurrentPupil.PupilID = PupilCurrentSchool.PupilID
LEFT OUTER JOIN LookupDetails
AS PupilCurrentSchoolYearGroupLookupDetails
ON PupilCurrentSchoolYearGroupLookupDetails.LookupDetailsID =
PupilCurrentSchool.YearGroup
AND PupilCurrentSchoolYearGroupLookupDetails.LookupID = '3004'
AND PupilPersonalDetails.PupilID
INNER JOIN [win2k12sql].USERFILE.dbo.pupil
ON PupilID = user_file_userid
WHERE ('%wc%' = '%wc%')
请像这样写清楚 请测试以下内容 从[win2k12sql.USERFILE.dbo.product]中选择*,其中pupilID=NumberYouKnowExists,其中(“%wc%”=“%wc%”)
如果您使用一些别名,您的查询将更容易处理。公平地说,您的代码中有很多别名,但别名与表名相同。这就像说我的名字是“Sean Lange”,也称为“Sean Lange”.我喜欢使用非常短的别名,然后在查询之间尽可能保持它们的一致性 另外,不要使用字符串文字作为别名。这会起作用,但会增加混乱、更多的击键和零效益。并且,除非您希望列的名称在结果集中不同,否则不需要在列上使用别名 只需使用一些别名和格式化,您的文本墙查询就可以很容易地看到发生了什么
SELECT
cp.SchoolID
, cp.PupilID
, ppd.Surname
, ppd.Forename AS First_Name
, pcsygld.Description AS Year_Group
FROM CurrentPupil cp
LEFT OUTER JOIN PupilPersonalDetails AS ppd ON cp.SchoolID = ppd.SchoolID
AND cp.PupilID = ppd.PupilID
LEFT OUTER JOIN PupilCurrentSchool AS pcs ON cp.SchoolID = pcs.SchoolID
AND cp.PupilID = pcs.PupilID
LEFT OUTER JOIN LookupDetails AS pcsygld ON pcsygld.LookupDetailsID = pcs.YearGroup
AND pcsygld.LookupID = '3004'
AND ppd.PupilID = cp.PupilID --you were missing cp.PupilID
INNER JOIN win2k12sql.USERFILE.dbo.pupil p ON p.PupilID = user_file_userid
WHERE ('%wc%' = '%wc%') --This doesn't make any sense. You are comparing two string literals.
从[win2k12sql.USERFILE.dbo.poudio where puilID=NumberYouKnowExists where('%wc%'='%wc%')中选择一个学生id并运行select*,然后从那里开始工作。您是否注意到您的服务器连接使用and和处于双连接状态?在从其他服务器进行查询之前,您需要将其添加为链接服务器
SELECT
cp.SchoolID
, cp.PupilID
, ppd.Surname
, ppd.Forename AS First_Name
, pcsygld.Description AS Year_Group
FROM CurrentPupil cp
LEFT OUTER JOIN PupilPersonalDetails AS ppd ON cp.SchoolID = ppd.SchoolID
AND cp.PupilID = ppd.PupilID
LEFT OUTER JOIN PupilCurrentSchool AS pcs ON cp.SchoolID = pcs.SchoolID
AND cp.PupilID = pcs.PupilID
LEFT OUTER JOIN LookupDetails AS pcsygld ON pcsygld.LookupDetailsID = pcs.YearGroup
AND pcsygld.LookupID = '3004'
AND ppd.PupilID = cp.PupilID --you were missing cp.PupilID
INNER JOIN win2k12sql.USERFILE.dbo.pupil p ON p.PupilID = user_file_userid
WHERE ('%wc%' = '%wc%') --This doesn't make any sense. You are comparing two string literals.