2011-05-13 2 views
3

Il est difficile de composer un nom de sujet pour moi. Mais je peux montrer un exemple:comment optimiser plusieurs "WHERE (Select ....) = value" de la même table

WHERE (SELECT [ID_Line] FROM [Event] WHERE [Event].[Name] = [A].[Col]) = 2 
AND  (SELECT [DataType] FROM [Event] WHERE [Event].[Name] = [A].[Col]) = 2 

Ici, je suis le traitement de 2 requêtes quand je vraiment besoin de quelque chose comme ça:

WHERE (SELECT [ID_Line],[DataType] FROM [Event] WHERE [Event].[Name] = [A].[Col]) = 2,2 

mais SQL ne fonctionne pas avec tuples, alors dois-je faire Inner Join ici?

+0

Quel RDBMS s'il vous plaît? – gbn

+0

@gbn ms sql 2008 express – Cynede

Répondre

7

vous pouvez essayer quelque chose comme ceci:

WHERE EXISTS (
    SELECT [ID_Line] FROM [Event] WHERE 
     [Event].[Name] = [A].[Col] AND 
     [Event].[ID_Line] = 2 AND 
     [Event].[DataType] = 2 
) 

Si vous fournissez plus d'informations sur la structure requête complète et votre base de données, une réponse plus précise pourrait être donnée. Il est possible que ce ne soit pas la meilleure solution.

0

Vous pouvez essayer de faire fondre les champs à l'aide d'un opérateur de fusion. Dans ORACLE PL/SQL, vous utilisez || (double tuyau), par exemple.

Questions connexes