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

Update de varios campos en vatias tablas

Estas en el tema de Update de varios campos en vatias tablas en el foro de Bases de Datos General en Foros del Web. hola otra ves molestando por aqui tengo tres tablas Código: CREATE TABLE [dbo].[Table_1]( [id] [int] NOT NULL, [cantidad] [float] NULL, [nombre] [nchar](10) NULL, CONSTRAINT [PK_Table_1] ...
  #1 (permalink)  
Antiguo 02/06/2009, 11:58
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 5 meses
Puntos: 1
Update de varios campos en vatias tablas

hola otra ves molestando por aqui
tengo tres tablas



Código:
CREATE TABLE [dbo].[Table_1](
	[id] [int] NOT NULL,
	[cantidad] [float] NULL,
	[nombre] [nchar](10) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
Código:
CREATE TABLE [dbo].[Table_2](
	[id] [int] NOT NULL,
	[nombre] [nchar](10) NULL,
 CONSTRAINT [PK_Table_2] PRIMARY KEY CLUSTERED 
(
	[id] ASC

Código:
CREATE TABLE [dbo].[Table_3](
	[id] [int] NULL,
	[cla1] [int] NULL,
	[cla2] [int] NULL,
	[cont] [float] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Table_3]  WITH CHECK ADD  CONSTRAINT [FK_Table_3_Table_1] FOREIGN KEY([cla1])
REFERENCES [dbo].[Table_1] ([id])
GO

ALTER TABLE [dbo].[Table_3] CHECK CONSTRAINT [FK_Table_3_Table_1]
GO

ALTER TABLE [dbo].[Table_3]  WITH CHECK ADD  CONSTRAINT [FK_Table_3_Table_2] FOREIGN KEY([cla2])
REFERENCES [dbo].[Table_2] ([id])
GO

ALTER TABLE [dbo].[Table_3] CHECK CONSTRAINT [FK_Table_3_Table_2]
GO
la tabla tres tiene 4 campos (id, clave 1, clave 2, cantidad)
esta relacionada con la tabla 1 y tabla 2
hize una cosnulta que cuando un regsitro de la tabla dos de todas los registro que estan
por ejemplo:
Código:
select * from (Table_1 as uno INNER JOIN Table_3 as tres 
ON uno.id=tres.cla1)  inner join Table_2 as dos
ON dos.id=tres.cla2
where dos.nombre='p1'
y da:
Código:

1	10	art1      	1	1	1	5	1	p1        
2	10	art2      	2	2	1	6	1	p1        
3	20	aert3     	3	3	1	7	1	p1

ahora kiero que esa cantidad que aparece en el campo de la tabla 3 llamado cant (5,6 y7 en el ejmplo)
se reste al campo del registro de la tabla1 cant(10,10,20 en el ejemplo)


gracias de antemano a todos los foreros
  #2 (permalink)  
Antiguo 02/06/2009, 13:48
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Update de varios campos en vatias tablas

No se nada de sql server... Pero esto parece ser sql estándar.
pero para empezar, no debes llamar los datos con *. Debes hacerlo campo por campo, para poder acceder a los valores puntuales.

quedaría mas o menos así:
Código sql:
Ver original
  1. SELECT (uno.cantidad-tres.cantidad)AS resta, otros_campos FROM (Table_1 AS uno INNER JOIN Table_3 AS tres
  2. ON uno.id=tres.cla1)  INNER JOIN Table_2 AS dos
  3. ON dos.id=tres.cla2
  4. WHERE dos.nombre='p1'


Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/06/2009, 11:36
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Update de varios campos en vatias tablas

el problema es que necesito hacer un Update no solo la consulta pero basado en el codgo ice lo siguiente
Código SQL:
Ver original
  1. UPDATE Table_1
  2. SET cantidad = cantidad-(SELECT cont FROM (Table_1 AS uno INNER JOIN Table_3 AS tres
  3. ON uno.id=tres.cla1)  INNER JOIN Table_2 AS dos
  4. ON dos.id=tres.cla2
  5. WHERE dos.nombre='p1')
pero me marca error:

Código:
Mens. 512, Nivel 16, Estado 1, Línea 1
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.
Se terminó la instrucción.
si ejecuto la culsulta solita regresa tres valores
ayuda
  #4 (permalink)  
Antiguo 03/06/2009, 14:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Update de varios campos en vatias tablas

Ni en sql server ni en ninguna base de datos, permitirá hacer una operación con un select si tiene varios registros de salida.

Analiza lo siguiente..

vos queres restar a cantidad el resutado de esa consulta que te genera varias salidas? Con cual de los 3 registros que te bota la consulta quieres hacer la resta?

Si es con la suma de los tres, utiliza la función sum y veras como te funciona.

Código sql:
Ver original
  1. UPDATE Table_1
  2. SET cantidad = cantidad-(SELECT SUM(cont) FROM (Table_1 AS uno INNER JOIN Table_3 AS tres
  3. ON uno.id=tres.cla1)  INNER JOIN Table_2 AS dos
  4. ON dos.id=tres.cla2
  5. WHERE dos.nombre='p1')
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 04/06/2009, 09:21
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Update de varios campos en vatias tablas

Cita:
Iniciado por Bazookao Ver Mensaje

1 10 art1 1 1 1 5 1 p1
2 10 art2 2 2 1 6 1 p1
3 20 aert3 3 3 1 7 1 p1


[/CODE]

si pero ahora que ya tengo esa consulta que em regresa tres valores (5,4,13)

es el resultado de:
10-5=5
10-6=4
20-7=13

ahora estos valores los guarde donde estaban 10,10,20
que era cantidad de tabla 1
  #6 (permalink)  
Antiguo 07/06/2009, 20:03
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 5 meses
Puntos: 1
Pregunta Respuesta: Update de varios campos en vatias tablas

Bueno ya puede hacerlo en SQL

Código SQL:
Ver original
  1. UPDATE Table_1 SET cantidad= (uno.cantidad-tres.cont)
  2. FROM (Table_1 AS uno INNER JOIN Table_3 AS tres
  3. ON uno.id=tres.cla1)  INNER JOIN Table_2 AS dos
  4. ON dos.id=tres.cla2
  5. WHERE dos.nombre='p2'

pero cuando lo trato de hacer en Acces 2007 me da un Error

No se controló System.Data.OleDb.OleDbException
ErrorCode=-2147217900
Message="Error de sintaxis (falta operador) en la expresión de consulta (uno.cantidad-tres.cont)
FROM (Table_1 AS uno INNER JOIN Table_3 AS tres
ON uno.id=tres.cla1) INNER JOIN Table_2 AS dos
ON dos.id=tres.cla2
Source="Microsoft Office Access Database Engine"

Pro favor necesito urgentemente que em digan que es lo que tengo que corregir para access URGE

por favor
Gracias.
  #7 (permalink)  
Antiguo 07/06/2009, 20:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Update de varios campos en vatias tablas

Debes buscar la sintaxis correcta para access.

Creo que debes poner primero los inner join y después realizar los set correspondientes.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 07/06/2009, 20:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Update de varios campos en vatias tablas

pruebala así:

Código sql:
Ver original
  1. UPDATE Table_1 (Table_1 AS uno INNER JOIN Table_3 AS tres
  2. ON uno.id=tres.cla1)  INNER JOIN Table_2 AS dos
  3. ON dos.id=tres.cla2
  4. SET cantidad= (uno.cantidad-tres.cont)
  5. WHERE dos.nombre='p2'

Nos cuentas como te va
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 12:13.