Tsql 查询联接中的差异
我有一个动态生成的查询Tsql 查询联接中的差异,tsql,sql-server-2008,Tsql,Sql Server 2008,我有一个动态生成的查询 SELECT '' + CAST(GalleryGallery_tGallery._Name AS VARCHAR(4000)) + '' AS NewName FROM Photographers_tGalleries LEFT OUTER JOIN Gallery_tGallery AS GalleryGallery_tGallery ON BaseContent_tGalleries.[Gallery] = GalleryGall
SELECT '' + CAST(GalleryGallery_tGallery._Name AS VARCHAR(4000)) + '' AS NewName
FROM Photographers_tGalleries
LEFT OUTER JOIN Gallery_tGallery AS GalleryGallery_tGallery
ON BaseContent_tGalleries.[Gallery] = GalleryGallery_tGallery._Guid
LEFT OUTER JOIN BaseContent_tGalleries
ON Photographers_tGalleries._Guid =
BaseContent_tGalleries._Guid_Structure_Content
这些连接在我看来是正确的。但是,无法绑定多部分标识符“BaseContent\u tGalleries.Gallery”的查询错误。
下面的查询确实有效。虽然联接与正确的字段匹配,但它们的顺序不同。我想知道为什么这个有效而另一个无效。我们想修复最上面的一个,但因为它是动态的,我期待着最少的变化
SELECT '' + CAST(GalleryGallery_tGallery._Name AS VARCHAR(4000)) + '' AS NewName
FROM Gallery_tGallery AS GalleryGallery_tGallery
LEFT OUTER JOIN BaseContent_tGalleries
ON GalleryGallery_tGallery._Guid = BaseContent_tGalleries.Gallery
LEFT OUTER JOIN Photographers_tGalleries
ON BaseContent_tGalleries._Guid_Structure_Content =
Photographers_tGalleries._Guid
第一个查询不起作用,因为您试图在ON语句中使用表BaseContent\u tGalleries,但它尚未联接。换句话说,您正在使用表作为联接条件,但表本身尚未联接。第一个查询不起作用,因为您试图在ON语句中使用table BaseContent\u tGalleries,但尚未联接。换句话说,您使用表作为联接条件,但表本身尚未联接。您对第一个查询的联接顺序是错误的。您需要在Gallery\u tGallery之前参考BaseContent\u tGallery
SELECT '' + CAST(g._Name AS VARCHAR(4000)) + '' AS NewName
FROM Photographers_tGalleries AS g
LEFT OUTER JOIN BaseContent_tGalleries AS b
ON g._Guid = b._Guid_Structure_Content
LEFT OUTER JOIN Gallery_tGallery AS gg
ON b.[Gallery] = gg._Guid;
顺便问一下,谁给你的表和别名命名的
GalleryGallery\u tGallery
,真的吗?我已经转换成更短的别名,以补偿真正喜欢打字的人。很多。您对第一个查询的连接顺序是错误的。您需要在Gallery\u tGallery之前参考BaseContent\u tGallery
SELECT '' + CAST(g._Name AS VARCHAR(4000)) + '' AS NewName
FROM Photographers_tGalleries AS g
LEFT OUTER JOIN BaseContent_tGalleries AS b
ON g._Guid = b._Guid_Structure_Content
LEFT OUTER JOIN Gallery_tGallery AS gg
ON b.[Gallery] = gg._Guid;
顺便问一下,谁给你的表和别名命名的
GalleryGallery\u tGallery
,真的吗?我已经转换成更短的别名,以补偿真正喜欢打字的人。很多。我知道这很疯狂,这些都是日常的WTF类型的东西。我决定重写整个函数。谢谢你的帮助,我知道这很疯狂,而且这些都是日常的WTF类型的东西。我决定重写整个函数。谢谢你的帮助