actualizando una tabla a otra sql

ok... estoy seguro de que estoy teniendo un momento de pedo cerebral... pero por alguna razón no puedo hacer que esta actualización funcione. Tengo 2 tablas, estoy tratando de copiar información de 8 columnas a 8 columnas en otra tabla. .. esto es lo que tengo hasta ahora

update a
set a.denialcharge_cost = b.denial_cost
    , a.epd_cost = b.early_default_payment
    , a.expeditecharge_cost = b.expeditecharge
    , a.duediligence_cost = b.duediligence
    , a.deskreview_cost = b.deskreview
    , a.servicing_cost = b.servicingcharge
    , a.mers_cost = b.merscharge
    , a.qcplans_cost = b.qcplans
from orderheader a 
inner join clients b
on a.prnt_id = b.id

me sale el error

Msg 512, Level 16, State 1, Procedure UpdateOrderHeader, Line 13
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.

tengo x número de clientes en clientes... y y número de pedidos en encabezado de pedido... cada pedido puede tener 1 cliente... cada cliente puede tener varios pedidos... prnt_id en el encabezado de pedido tiene el id en la tabla de clientes... cualquier ayuda sería apreciada... estoy tratando de copiar denial_cost, early_default_payment, expeditecharge, duediligence, deskreview, servicingcharge, merscharge, qcplans de clientes a orderheader

preguntado el 03 de mayo de 12 a las 17:05

¿podría ser porque no tienes una cláusula where? -

por favor publique el sistema de base de datos que utiliza. (como etiqueta) -

Si entiendo lo que está tratando de hacer, está tratando de actualizar cada encabezado de pedido con información del cliente. Esto plantea la pregunta, ¿por qué hacer esto en absoluto? ¿Por qué no simplemente relacionar el encabezado del pedido con la información del cliente y tomar la información de la tabla de clientes? Parece que estás trabajando en contra del modelo relacional aquí. -

lo tenemos relacionado con el cajero automático de la mesa del cliente, el problema es que, cuando cambiamos las tarifas de los clientes, actualiza TODAS las facturas antiguas... por lo que parece que nos deben dinero, o nosotros les debemos... (yo no construí esto), por lo que la idea es que todas las facturas futuras, una vez creadas, guarden su precio inicial en el encabezado del pedido, en lugar de ser llamadas por el cliente:

¿Disparadores sobre la mesa? stackoverflow.com/questions/149124/… -

3 Respuestas

Basado en esta respuesta a una pregunta anterior, y a todas las demás soluciones de problemas que hicimos, parece que tiene un desencadenante que se interpone en alguna parte. Intente deshabilitarlo y ejecutar la actualización.

contestado el 23 de mayo de 17 a las 13:05

ALGO así debería funcionar (con formato)

update orderheader
set denialcharge_cost = b.denial_cost, 
    epd_cost = b.early_default_payment,
    expeditecharge_cost = b.expeditecharge,
    duediligence_cost = b.duediligence,
    deskreview_cost = b.deskreview, 
    servicing_cost = b.servicingcharge,
    mers_cost = b.merscharge, 
    qcplans_cost = b.qcplans
from clients b 
where orderheader.prnt_id = clients.id

contestado el 03 de mayo de 12 a las 18:05

esto no funcionará ... es básicamente lo mismo que tengo en un formato dif - Eddy Whitaker

¿Qué quieres decir con que no funciona? ¿Estás recibiendo un error? o el resultado no cumple con lo que quieres? - Rodaballo

por lo que entiendo del error, está intentando obtener solo un resultado, en algún lugar y la subconsulta devuelve más de un campo.

como

seleccionar (seleccionar * de bb) como cuenta de cc da un error

porque la subconsulta devuelve más de un campo de la consulta anidada

contestado el 03 de mayo de 12 a las 18:05

sí, estoy tratando de tener un solo resultado... bueno para cada columna... pero sí - Eddy Whitaker

Intenté dividirlo y actualicé cada uno con una selección, seleccionando la columna que necesitaba ... el mismo error ... así que agregué la selección superior 1 ... el mismo error: Eddy Whitaker

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.