Effectuer une mise à JOUR de l'Union en SQL
Si j'avais à ces trois tableaux (juste un exemple, afin d'apprendre de l'UNION, ce ne sont pas des vraies tables):
Tables avec leurs colonnes:
Customer:
id | name | order_status
Order_Web:
id | customer_id | order_filled
Order:
id | customer_id | order_filled
Et je voulais mettre à jour order_status dans la table Client quand il y a un ordre remplis le Order_Web tableau ou le tableau de Commande du client à l'aide de l'Union:
UPDATE c
SET c.order_status = 1
FROM Customer AS c
INNER JOIN Order_Web As ow
ON c.id = ow.customer_id
WHERE ow.order_filled = 1
UPDATE c
SET c.order_status = 1
FROM Customer AS c
INNER JOIN Order As o
ON c.id = o.customer_id
WHERE o.order_filled = 1
Comment puis-je combiner ces deux mises à jour à l'aide d'une Union sur order_web et de l'ordre?
À l'aide de Microsoft SQL Server Management Studio
Order status should not be in the customer table
. Tableau design est incorrect ici. Un client peut avoir plusieurs commandes et chaque ordre devraient avoir leur propre état. Donc, Order status should be in order table(s)
.avez-vous remarqué la phrase où il dit qu'ils ne sont pas de vrais tableaux?
OriginalL'auteur Jaiesh_bhai | 2013-11-06
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'un
UINION
pour qu' - remplacement d'un inner join avec une paire de lobes extérieurs devrait le faire:Vous pouvez également utiliser un
WHERE EXISTS
, comme ceci:Si vous devez utiliser
UNION
, vous pouvez le faire comme suit:ou la même avec un
JOIN
:OriginalL'auteur dasblinkenlight
OriginalL'auteur Quassnoi
Vous pouvez mettre votre requête union dans une sous-requête.
OriginalL'auteur Dan Bracuk