2010-10-21 3 views
1

J'ai une requête SQL que je ne parviens pas à améliorer en ce moment. Ça marche, mais c'est un peu moche.Améliorer la requête avec la clause WHERE en utilisant la même sous-requête plusieurs fois

Je veux chercher:

  • un id de la table A
  • un nom de la table B

en utilisant une clause WHERE qui en elle-même va chercher une valeur d'une autre requête SQL.

Je voudrais remplacer les deux instances de cette requête SQL utilisée pour la clause WHERE, avec un cas suivants:

SELECT intImageGalleryID FROM tblEPiServerCommunityImageGalleryImage 
WHERE intID = 123123 

Comment peut-il être fait?

Utilisation de SQL Server.

est ici la requête SQL complète:

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) 

Merci!

Répondre

2

Vous pourriez essayer ci-dessous la requête. Je pense que c'est équivalent à votre solution originale.

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

Merci Lieven - malheureusement l'intId retourné est 123123 - le même dans la clause WHERE. Comment l'intImageGalleryId peut-il être retourné? –

+0

@ Martin S. Il semble que j'ai utilisé le mauvais alias. Pourriez-vous réessayer? –

+0

Ça marche! Merci pour ça! Maintenant, c'est à moi de tenter de comprendre ça :) –

Questions connexes