FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Update con Select
Hola a todos...
Uso Firebird Tengo una duda quiero calcular la produccion y actualizar la tabla AUX_INFPLANTA el campo M3PRODUCIDOS y necesito los datos de otras dos tablas INFPLANTA y ART_PLANTA al ejecutar la instrucción me sale error. multiple rows in singleton select. multiple rows in singleton select.
Los datos ya existen en las tablas incluida la M3PRODUCCION quiero reemplazarlo con el nuevo calculo Ayuda por favor... Gracias |
#2
|
||||
|
||||
Parece que en TODOS los registro de la tabla aux_infplanta estás poniendo el mismo resultado.
Verifica si esto es realmente lo que quieres. Segundo "multiple rows...". Esto se refiere que que estas tratando de poner varios registros dentro de un lugar donde entra solo uno. Mi sospecha es que el SELECT devuelve más de un resultado.
Prueba a hacer el select solo y lo verás. Normalmente para solucionar este problema utilizarías algo así como select sum(campo) from ...
|
#3
|
|||
|
|||
Ejecute el procedimiento solo con el SELECT y me arrojo una columna con los 50.000 registros aprox. de AUX_INFPLANTA.
INFPLANTA: es donde esta al registro de la diferencia que se produce de las horas trabajadas de las PLANTAS (INICIO Y TERMINO). AUX_INFPLANTA es el detalle por cada producto de la planta, almacena las HORAS PRODUCIDAS por cada producto en forma diaria. ART_PLANTA Maestro productos que contiene la hora base de producción por planta. No tengo que sumar solo leer el detalle de AUX_INFPLANTA y volver a calcular M3PRODUCIDAS tomando como datos de calculo las diferencias de hora de INFPLANTA y el M3XHORA de ART_PLANTA como datos base de calculo no se si me explico bien..... sorry |
#4
|
||||
|
||||
Empecemos:
El update recorre los 50.000 registros de aux_infplanta. Para cada registro ejecuta el select. Este select no está filtrado, pues la línea aux_infplanta.codart = art_planta.codart no sabe si se refiere al registro de la tabla que se está "updateando" o al registro que se está "seleccionando". Deberías utilizar alias para resolver este caso:
Aqui le digo que el select me devuelva solo los registros que contienen el mismo CODART que el registro que estoy "updateando". Te propongo que para que el SQL sea más simple utilices JOINS y ALIAS:
Ten en cuenta que para hacer los joins es conveniente utilizar todos los campos de las Foreign Keys. No conozco tu base de datos, por lo que quizás no sea la mejor manera de hacer los joins. |
#5
|
|||
|
|||
gracias por Responder tan pronto a mis consultas
aun sigo con mi tema he tratado de diferentes formas hice los que me indicaste modificando un pequeño detalle
Me da error (lo que esta en rojo) y lo reemplazo por Alias (UPD) y corre, pero sigue al dando el mismo error multiple rows in singleton select. multiple rows in singleton select. Luego lo intento con el segundo Ejemplo que me diste...
Tambien me rechaza usar los nombres originales de las tablas cuando ocupo Alias. si lo reemplazo usando alias me vuelve dar el mismo error....... multiple rows in singleton select. multiple rows in singleton select. Alguna otra idea ? Gracias |
#6
|
||||
|
||||
El Select que tienes dentro de los Paréntesis te debe de devolver UN UNICO registro. Mientras eso no sea así, te seguirá dando siempre ese error.
Lo que estás indicando con tu Update es que reemplaze un valor de un registro con un Select que te devuelve varios registros, y por eso no sabe con qué valor reemplazarlo y te da error.
__________________
Piensa siempre en positivo ! |
#7
|
|||
|
|||
GRACIAAAAAAAS
SOLUCIONADOOOOO Agregue un validador mas efectivamente era eso. Seleccionaba mas de un valor...por lo tanto tener cuidado a futuro de validar bien el requerimiento..
Tema Solucionado Gracias por sus Aportes..... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
UPDATE con SELECT como??? | advancexz | SQL | 4 | 17-03-2009 12:13:50 |
transacciones y select for update | tksko | MySQL | 1 | 17-12-2008 16:50:22 |
Select bloquea update | luis1980 | MySQL | 2 | 22-09-2008 12:51:04 |
Update Select | JAI_ME | Varios | 2 | 18-07-2008 23:36:15 |
Un select y update en una misma instruccion | dmagui | SQL | 2 | 06-07-2005 17:17:49 |
|