Devrais-je utiliser le Haut(1) dans une sous-Requête

Exemple De Requête:

select * 
from A join B on A.ID = B.SOMEVALUE
where A.VALUE="something" and
B.ID = 
       (select ID from B where SOMEVALUE = A.ID and 
              THISDATE = (select max(SOMEDATE) from B where ...))

donc, si vous pouvez lire SQL, vous devez voir que je suis en train de faire un couple de sous-requêtes corrélées pour affiner les résultats de la jointure . (et oui, c'est horriblement simplifiée).

Dans certains cas, la sous-requête:

select ID from B where SOMEVALUE = A.ID and 
    THISDATE = (select max(SOMEDATE) from B where ...)

peut renvoyer plus de valeur 1, ce qui provoque une erreur

"Sous-requête a renvoyé plus de valeur 1.
Ce n'est pas permis lorsque l'
sous-requête suit =, !=, <, <= , >, >=
ou lorsque la sous-requête est utilisé comme un
d'expression".

qui je l'espère. Ce n'est évidemment pas une bonne chose et je code à la place de (espérons-le) d'éviter ces doublons d'entrer dans la base de données en premier lieu (c'est à dire le tableau B devrait seulement 1 ligne qui correspond à la

SOMEVALUE = A.ID and max(SOMEDATE)

critères), cependant les utilisateurs finaux ne sont rien si ce n'créatif dans la recherche de moyens je ne peux pas penser à briser logiciel.

Donc maintenant à ma question:

Serait-il préférable de modifier la première sous-requête pour

select top 1 * from B ...

pour empêcher l'utilisateur de voir une erreur quand/si (j'espère jamais) cette situation se produit, ou de laisser l'erreur de venir à travers. Je me suis penchée pour ne pas ajouter du haut de déclaration et de laisser l'erreur de venir à travers, plutôt que de permettre à l'utilisateur de voir potentiellement des données incorrectes. Je me demandais si quelqu'un a des idées sur les Meilleures Pratiques dans ce genre de situation...

OriginalL'auteur pfunk | 2009-01-30