Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

MERGE y Consulta

Estas en el tema de MERGE y Consulta en el foro de SQL Server en Foros del Web. Tengo una duda con la sentencia MERGE . Entendiendo que la sintaxis es la siguiente: Código: MERGE <table_destino> [AS TARGET] USING <table_origen> [AS SOURCE] ON ...
  #1 (permalink)  
Antiguo 31/08/2017, 03:08
Avatar de senseeye3led  
Fecha de Ingreso: abril-2016
Ubicación: 127.0.0.1
Mensajes: 163
Antigüedad: 8 años
Puntos: 11
Pregunta MERGE y Consulta

Tengo una duda con la sentencia MERGE.

Entendiendo que la sintaxis es la siguiente:
Código:
MERGE <table_destino> [AS TARGET]
USING <table_origen> [AS SOURCE]
ON <condicion_compara_llaves>
[WHEN MATCHED THEN
<accion cuando coinciden> ]
[WHEN NOT MATCHED [BY TARGET] THEN
<accion cuando no coinciden por destino> ]
[WHEN NOT MATCHED BY SOURCE THEN
<accion cuando no coinciden por origen> ];
Veo que se utiliza una tabla_destino, pero por ejemplo en la tabla_destino tengo articulos, sus precios y el código de cliente. Dependiendo del código de cliente, el articulo tiene un precio diferente.

Me gustaría actualizar o crear articulos y su precio en función de 1 cliente determinado.

Por eso, me gustaría saber si en MERGE a la hora de poner la tabla destino se puede poner una consulta (select) que nos devolvería todos los articulos y precios que existen para ese determinado cliente.

Saludos
  #2 (permalink)  
Antiguo 31/08/2017, 08:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: MERGE y Consulta

Si lo haces con un subquery si se podria poner en destino tu consulta.....ya que merge no difiere de un insert cuando no existe y update cuando existe, que eso lo puedes lograr con left join
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 31/08/2017, 09:11
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: MERGE y Consulta

Entendamos para que sirve el MERGE, es una instruccion que toma dos conjuntos de informacion (Fuente - table_source y Destino - target_table), donde, COMPARANDO ambos conjutos de datos se pueden dar los siguientes resultados:

- MATCHED (Coincidencias)
- NOT MATCHED (Sin coincidencias)
- NOT MATCHED BY DE SOURCE (Sin coincidencias con el conjunto fuente)

Con estos resultados, se puede tomar la determinacion de INSERTAR, BORRAR o ACTUALIZAR los datos del conjunto de registros de la tabla DESTINO.

En pocas palabras, se hace un INSERT, UPDATE o DELETE, dependiendo de los resultados de la comparacion de dos conjuntos de datos.
__________________
MCTS Isaias Islas

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:38.