SQL Server - Update entre tablas ( Inner JOIN )

 
Vista:

Update entre tablas ( Inner JOIN )

Publicado por roger (3 intervenciones) el 06/06/2012 21:58:07
Hola amigos, estoy aprendiendo esto del SQL y tengo la sgte duda.
Tengo las tablas siguientes "Humano" y "Venta".

Lo que se desea es que se pueda actualizar la "serie" y "sucursal" de la Tabla VENTA

tomando como referencia el "documento" de la Tabla HUMANO.

Osea. Si el "documento" empieza con "X" debe cambiarse en la tabla VENTA la serie = X1 y sucursal = XX

Si el "documento" empieza con "Z" debe cambiarse en la tabla VENTA la serie = Z1 y sucursal = ZZ



Tabla : Humano
Perso------ Nombre ------- documento
5555 ------ Alex ------------- X45456
9999 ------ Betty------------- X65894
8888 ------ Carla------------ Z98989
2222 ------ Dante----------- Z12121
6666 ------ Euler------------ X46464
7777 ------ Felix------------- Z38383

Tabla : Venta
codigo----- serie------- sucursal
5555 ------ J ------------ A
9999 ------ J------------ A
8888 ------ L------------- A
2222 ------ L------------- B
6666 ------ L------------- B
7777 ------ L-------------A
5555 ------ L-------------B
2222 ------ K-------------B
2222 ------ K-------------B
8888 ------ R-------------A

Entiendo que debe ser con un inner Join, pero no logro hallar la sintaxis de mi Update.

Porfa ayudenme!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Update entre tablas ( Inner JOIN )

Publicado por yanet (1 intervención) el 06/06/2012 22:25:34
Seria algo del estilo
update venta set serie=algo, sucursal=algo where exists
(select * from humano where humano.perso = venta.codigo and documento like 'x%')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Update entre tablas ( Inner JOIN )

Publicado por Isaias (4558 intervenciones) el 06/06/2012 22:36:59
Yanet: No creo que sea algo tan simple

Roger: ¿Como es que se unen ambas tablas?

Por "Perso" = "codigo" ???, De sera asi, entonces:

UPDATE VENTA SET Serie = left(documento, 1) + '1',
sucursal = left(documento, 1) + left(documento, 1)
FROM VENTA v INNER JOIN HUMANO h on v.codigo = h.perso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Update entre tablas ( Inner JOIN )

Publicado por roger (3 intervenciones) el 07/06/2012 00:29:58
Hola, mil gracias por responder...! Son muy dadivosos... realmente me sorprendo.

Yanet : probe lo tuyo y me cambio toda la base de datos, jajajaja, no hay problema, era la de pruebas.

Isaias : Si, se unen por el unico punto en comun, "perso" , y "codigo"

Ahora, entiendo que el "left" lo usas para obtener la X o la Z de "documento" y luego esos "+1" son para ponerle el "X1" ( creo que entendí).

Te soy sincero, mi base de datos es muuucho mas grande, lo que puse es un ejemplo menor.

Entonces replanteo el problema
Si el "documento" empieza con "X" debe cambiarse en la tabla VENTA la serie = K y sucursal = CI
Si el "documento" empieza con "Z" debe cambiarse en la tabla VENTA la serie = I sucursal = ZIB

La solucion que das me parece es correcta por que vas armando el nombre que quiero, ya sea X1 o XX, pero con los datos que doy ahora, como seria.

Mil gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Update entre tablas ( Inner JOIN )

Publicado por Isaias (4558 intervenciones) el 07/06/2012 18:32:33
Roger

Es mucho mejor, que desde un inicio, plantees correctamente tu duda, prueba este codigo:

UPDATE VENTA SET Serie =
CASE WHEN left(documento, 1) = 'X' THEN 'K'
WHEN left(documento, 1) = 'Z' THEN 'I' END,
sucursal = CASE WHEN left(documento, 1) = 'X' THEN 'CI'
WHEN left(documento, 1) = 'Z' THEN 'ZIB' END,
FROM VENTA v INNER JOIN HUMANO h on v.codigo = h.perso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Update entre tablas ( Inner JOIN )

Publicado por roger (3 intervenciones) el 07/06/2012 21:20:35
Isaias, muchas gracias por tu ayuda, tienes razon , debi plantearlo tal y cual tengo mis datos.

Me sirvió tu codigo. Te pasaste....

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Update entre tablas ( Inner JOIN )

Publicado por Isaias (4558 intervenciones) el 07/06/2012 22:15:55
Roger

De nada y espero no te molestes, asi nos ahorras tiempo en la investigacion.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar