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

Update con subconsulta

Estas en el tema de Update con subconsulta en el foro de SQL Server en Foros del Web. Hola, En SQL 2K quiero montar una consulta para hacer un update que me updatee todos los valores de una tabla con los que coincidan ...
  #1 (permalink)  
Antiguo 24/03/2009, 05:08
 
Fecha de Ingreso: noviembre-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 0
Update con subconsulta

Hola,

En SQL 2K quiero montar una consulta para hacer un update que me updatee todos los valores de una tabla con los que coincidan por un campo en otra.
Cada tabla está en una base de datos diferente.
Yo tengo este codigo (aviso que mal) pero necesitaria saber como arreglar el tema:

UPDATE
[db][dbo][tabla]
set
([db][dbo][tabla].codmarca,[db][dbo][tabla].[marca].descripcion)=
(select n.code,n.name
from [db][dbo][tabla] w
inner join [db2][dbo][tabla2] n
on n.code = w.codmarca collate SQL_Latin1_General_CP1_CI_AS
where n.name<>'')

Por favor decidme como poder hacer este tipo de update si se puede, claro
  #2 (permalink)  
Antiguo 24/03/2009, 08:29
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Update con subconsulta

Hola, no se si será esto lo que necesitas...

use db
update table
set descripcion =
(select name from db2.dbo.table2 as db2
where db2.code = codmarca)

El usuario que lance el script tendrá que tener privilegios para la otra base de datos...

Saludos

Última edición por ejbsoft; 24/03/2009 a las 08:43
  #3 (permalink)  
Antiguo 24/03/2009, 08:49
 
Fecha de Ingreso: noviembre-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 0
Respuesta: Update con subconsulta

Tengo las DB vinculadas y con un inicio de sesión con derechos en la base de datos remota.

El problema es que el insert lo consigo hacer, pero con el update estoy teniendo problemas ya que en el select para obtener los valores he de hacer un join para escoger aquellos comunes en ambas tablas.
El select de mi consulta funciona pero es la estructura del update que no me funciona.

UPDATE
<tabla>
SET
(valor1_tabla,valor2_tabla) =
(
Select valor1_tabla2,valor2_tabla2
from <tabla>
inner join <tabla2>
on <valorclave1>=<valorclave2>
where <condicion>)

Si hago esto me sale el error:
sintaxis incorrecta cerca de '(' indicándome que el error está a la hora de montar el SET.

Alguien sabe que hago mal?
  #4 (permalink)  
Antiguo 24/03/2009, 09:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Update con subconsulta

Hola de nuevo.

Probaste el script?

En cuantos campos quieres hacer update, supongo que en el codmarca y code no deberías, ya que son los coincidentes, no es así?. Solo quedaría la descripcion


Otra cosa: No hace falta join ya que las columnas de la select son de la misma tabla.

Saludos
  #5 (permalink)  
Antiguo 24/03/2009, 10:18
 
Fecha de Ingreso: noviembre-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 0
Respuesta: Update con subconsulta

El problema ahora es que no me hace updates con las tablas vinculadas. Si me deja hacer inserts pero no updates ya que me sale un error bestial:

No se puede abrir la tabla '"DB"."tabla"."marca"' desde el proveedor OLE DB 'SQLOLEDB'. El proveedor no admite una posición de búsqueda de filas. El proveedor indica que hay conflictos con otras propiedades o requisitos.
[OLE/DB provider returned message: La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo.]
Traza de error de OLE DB [OLE/DB Provider 'SQLOLEDB' IOpenRowset::OpenRowset returned 0x80040e21: [PROPID=DBPROP_BOOKMARKS VALUE=True STATUS=DBPROPSTATUS_CONFLICTING], [PROPID=Unknown PropertyID VALUE=True STATUS=DBPROPSTATUS_OK], [PROPID=DBPROP_IRowsetLocate VALUE=True STATUS=DBPROPSTATUS_CONFLICTING], [PROPID=DBPROP_IRowsetChange VALUE=True STATUS=DBPROPSTATUS_OK], [PROPID=DBPROP_UPDATABILI...

Me sale al intentar hacer un update simple para probar donde estaba fallando.
Estoy ya que me subo por las paredes...
  #6 (permalink)  
Antiguo 27/03/2009, 08:05
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Update con subconsulta

Hola, según el error puede ser por varios motivos: tipos de campo diferentes, triggers, etc...

Si nos pones los scripts de las tablas y el que estás utilizando podremos ver algo...

Saludos
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 13:44.