2010-10-21 2 views
1

У меня есть запрос SQL, который я не могу улучшить прямо сейчас. Это работает, но это немного уродливо.Улучшение запроса с предложением WHERE с использованием одного и того же подзапроса несколько раз

Я хочу получать:

  • идентификатор из таблицы A
  • имя из таблицы B

используя ИНЕКЕ, которое само по себе извлекает значение из другого SQL запроса.

Я хотел бы заменить следующие два экземпляра этого SQL запроса, используемого для ИНЕКЕ, с одним экземпляром:

SELECT intImageGalleryID FROM tblEPiServerCommunityImageGalleryImage 
WHERE intID = 123123 

Как это можно сделать?

Использование SQL Server.

Вот полный SQL-запрос:

SELECT intID, 
     (SELECT strName 
     FROM tblEPiServerCommunityImageGallery 
     WHERE intID = 
      (SELECT intImageGalleryID 
      FROM tblEPiServerCommunityImageGalleryImage 
      WHERE intID = 123123) 
      ) as name 
FROM tblEPiServerCommunityClub 
    WHERE intImageGalleryID = 
     (SELECT intImageGalleryID 
     FROM tblEPiServerCommunityImageGalleryImage 
     WHERE intID = 123123) 

Спасибо!

ответ

2

Вы можете попробовать выполнить запрос ниже. Я думаю, что это эквивалентно вашему оригинальному решению.

SELECT scc.intID 
     , sci.strName 
FROM tblEPiServerCommunityClub scc 
     INNER JOIN tblEPiServerCommunityImageGalleryImage scig ON scig.intImageGalleryID = scc.intImageGalleryID 
     INNER JOIN tblEPiServerCommunityImageGallery sci ON sci.intID = scig.intImageGalleryID 
WHERE scig.intID = 123123   
+0

Thanks Lieven - к сожалению, intId возвращается 123123 - то же самое в предложении WHERE. Как можно вернуть фактический intImageGalleryId? –

+0

@Martin S. Кажется, я использовал неправильный псевдоним. Не могли бы вы повторить попытку? –

+0

Он работает! Спасибо вам за это! Теперь это зависит от меня, пытаясь понять это :) Привет! –

Смежные вопросы