Разница в запросах - PullRequest
       1

Разница в запросах

0 голосов
/ 04 августа 2011

У меня есть запрос, который генерируется динамически.

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  

Соединения кажутся мне правильными.Однако ошибки запроса с The multi-part identifier "BaseContent_tGalleries.Gallery" could not be bound.

Следующий запрос работает.Хотя объединения соответствуют правильным полям, они находятся в другом порядке.Мне интересно, почему этот работает, а другой нет.Мы хотели бы исправить верхний, но поскольку он динамический, я ищу наименьшее количество изменений.

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  

Ответы [ 2 ]

3 голосов
/ 04 августа 2011

Ваш запрос на объединение для первого запроса неверен.Вы должны ссылаться на BaseContent_tGalleries до Gallery_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_tGallery, правда?Я перешел на более короткие псевдонимы, чтобы компенсировать тот, кто действительно любит печатать.ЛОТ.

3 голосов
/ 04 августа 2011

Первый запрос не работает, так как вы пытаетесь использовать таблицу BaseContent_tGalleries в операторе ON, но он еще не был объединен. Другими словами, вы используете таблицу в качестве условия соединения, но сама таблица еще не была объединена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...