J'ai cette requête: et je reçois une erreur: p> Nom de colonne invalide 'orderlocation' p>
blockQuote> La requête suivante fonctionne bien et fait ce qui est destiné à: p> réaliste, ce n'est pas un énorme em> problème, Mais c'est un peu douloureux de répéter le même texte deux fois et de se rappeler de la mettre à jour dans les deux endroits si elle change. Y a-t-il un meilleur moyen d'écrire cette requête pour qu'il n'y ait pas de répétition? Peut-être utiliser des variables ou quelque chose? Je ne suis pas un expert SQL, je ne suis donc pas sûr d'une meilleure façon d'écrire cela. P> Toute aide serait appréciée. Merci d'avance! P> p>
3 Réponses :
Vous pouvez déplacer la sous-requête vers le si regarder votre code, cela ne serait pas vraiment: p> à partir de code>: SELECT oi.*, --still should be a distinct column list
o.location,
ISNULL(oi.location,o.location ) AS OrderLocation
FROM dbo.orderitem oi
JOIN dbo.[order] O ON o.[id] = oi.OrderIDl --LEFT JOIN if there may not be a row here.
Suppression de la mine car cela couvre l'option de jointure et s'applique.
Pour développer le commentaire de @john Cappelletti.
ou code> est un mot-clé réservé.
J'utilisais déjà une jointure, mais j'ai simplifié la requête de la question. La requête originale avec la déclaration de cas était Je n'étais pas au courant des commandes de coalesce ou d'Isnull, cependant. Ils travaillaient parfaitement. J'ai fini par: p> merci pour l'aide! P> p>
Pourquoi ne pas effectuer une simple jointure gauche