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

Insercion de datos en varias tablas

Estas en el tema de Insercion de datos en varias tablas en el foro de SQL Server en Foros del Web. Hola a todos. Tengo un duda. Lo que pasa es que estoy haciendo una pagina web y en ella tengo q hacer una incercion de ...
  #1 (permalink)  
Antiguo 06/02/2008, 08:22
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Insercion de datos en varias tablas

Hola a todos.

Tengo un duda. Lo que pasa es que estoy haciendo una pagina web y en ella tengo q hacer una incercion de datos en una cabecera y en un detalle de cabecera.

Ahora bien, en la cabecera tengo el problema. Lo que pasa es que tengo que ingresar los datos en una tabla que se llama CROSSDOCKINHEADER que tiene campos como ID_CROSSDOCKING, FECHA_INGRESO, FECHA_TERMINO, ID_NEGOCIO (FK), FECHA, entre otras.

Pero ademas en la pagina web tengo q ingresar datos como Rut proveedor, nombre del recepcionista y otras cosas, en el cual en la tabla CROSDOCKINGHEADER solo tiene ID_NEGOCIO_PROVEEDOR, ID_NEGOCIO_RECEPCIONISTA que son los nub que llegan a las tablas proveedor, y recepcionista.

ahora quiero hacer una insercion que me ingrese los datos mencionados anteriormente mas los otros datos ( q son los id ), pero nose como se hacen.

Estaba pensando en hacer distintos insert, empezando desde la tabla padre, hasta terminar insertando en las tablas hijas. Pero mi pregunta es ¿Se podra hacer todo esto en una sola insercion, utilizando select dentro de los insert?
  #2 (permalink)  
Antiguo 06/02/2008, 09:04
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Re: Insercion de datos en varias tablas

Si se puede realizar insercion utilizando un select con joins.

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 06/02/2008, 09:28
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Insercion de datos en varias tablas

y como seria?

intente con:

Código:
INSERT INTO CROSSDOCKINGHEADER (ID_NEGOCIO_PROVEEDOR, ID_NEGOCIO, ID_NEGOCIO_RECEPCIONISTA) 
VALUES ((SELECT NEGPROV.ID_PROVEEDOR 
		 FROM PROVEEDOR PROV, NEGOCIO_PROVEEDOR NEGPROV 
		 WHERE PROV.ID_PROVEEDOR = NEGPROV.ID_PROVEEDOR), 
		(SELECT ID_NEGOCIO FROM NEGOCIO WHERE ID_NEGOCIO = 1), 
		(SELECT ID_NEGOCIO_RECEPCIONISTA 
		 FROM NEGOCIO_RECEPCIONISTA NEGRECEP, RECEPCIONISTA RECEP 
		 WHERE NEGRECEP.ID_RECEPCIONISTA = RECEP.ID_RECEPCIONISTA))
  #4 (permalink)  
Antiguo 06/02/2008, 09:38
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Insercion de datos en varias tablas

Ese Id_negocio = 1 Es Por Poner Un Ejemplo
  #5 (permalink)  
Antiguo 06/02/2008, 09:48
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Re: Insercion de datos en varias tablas

Seria algo de esta forma (aunque no escribiste la forma en que se relacionan las tablas supuse algo como esto)

Código:
INSERT INTO CROSSDOCKINGHEADER (ID_NEGOCIO_PROVEEDOR, ID_NEGOCIO, ID_NEGOCIO_RECEPCIONISTA) 
Select P.ID_PROVEEDOR
      ,N.ID_NEGOCIO 
      ,R.IDRECEPCIONISTA
From   Negocio N
Inner join
      NEGOCIO_PROVEEDOR NP
On    N.Id_Negocio = NP.Id_Negocio
Inner join
      PROVEEDOR  P
On    NP.ID_PROVEEDOR = P.ID_PROVEEDOR
Inner join
      NEGOCIO_RECEPCIONISTA NR
On    N.Id_Negocio = NR.Id_Negocio
Inner join
      RECEPCIONISTA R
On    NR.ID_RECEPCIONISTA = R.ID_RECEPCIONISTA
Where N.Id_Negocio = @Id_Negocio

Si tienes foreing keys con las tablas (por ejemplo entre Recepcionista y NegocioRecepcionista) no seria necesario consultar las tablas de Recepcionista y Proveedor ya que por regla de la bd estamos seguros de que existiran y la sentencia seria mas sencilla....


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 06/02/2008, 09:48
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Insercion de datos en varias tablas

YA APRENDI COMO.

muchas gracias por tu ayuda Andres
  #7 (permalink)  
Antiguo 07/02/2008, 07:23
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Insercion de datos en varias tablas

He intentado hacer el insert pero no me inserta nada.

Código:
INSERT INTO CROSSDOCKINGHEADER (ID_NEGOCIO, FECHA, ID_NEGOCIO_PROVEEDOR,
HORA_LLEGADA, HORA_ASIGNADA, ID_NEGOCIO_RECEPCIONISTA,
HORA_INICIO_RECEPCION, HORA_FIN_RECEPCION)
SELECT			CROSSHEADER.ID_NEGOCIO, CROSSHEADER.FECHA, NEGPROV.ID_NEGOCIO_PROVEEDOR, CROSSHEADER.HORA_LLEGADA, 
CROSSHEADER.HORA_ASIGNADA, CROSSHEADER.ID_NEGOCIO_RECEPCIONISTA, CROSSHEADER.HORA_INICIO_RECEPCION, 
CROSSHEADER.HORA_FIN_RECEPCION
FROM			CROSSDOCKINGHEADER CROSSHEADER, NEGOCIO_PROVEEDOR NEGPROV, NEGOCIO NEG, NEGOCIO_RECEPCIONISTA NEGRECEP
WHERE			NEGPROV.ID_NEGOCIO_PROVEEDOR = CROSSHEADER.ID_NEGOCIO_PROVEEDOR AND 
CROSSHEADER.FECHA = '10-10-2007' AND NEGPROV.ID_NEGOCIO_PROVEEDOR = '1' 
AND HORA_ASIGNADA = '10:00' AND HORA_LLEGADA = '10:00' 
AND HORA_INICIO_RECEPCION = '10:30' AND HORA_FIN_RECEPCION = '11:00' AND NEGRECEP.ID_NEGOCIO_RECEPCIONISTA = '1'
AND NEG.ID_NEGOCIO = '1' AND NEGRECEP.ID_NEGOCIO_RECEPCIONISTA = CROSSHEADER.ID_NEGOCIO_RECEPCIONISTA
ese es el codigo.

que tengo malo?

las tablas son:

--------------------------------
CROSSDOCKINGHEADER
--------------------------------

ID_CROSSDOCKINGHEADER (PK)
ID_NEGOCIO (FK)
FECHA
ID_NEGOCIO_PROVEEDOR (FK)
HORA_LLEGADA
HORA_ASIGNADA
ID_NEGOCIO_RECEPCIONISTA (FK)
HORA_INICIO_RECEPCION
HORA_FIN_RECEPCION

---------------------------
NEGOCIO
--------------------------
ID_NEGOCIO (PK)
DESCRIPCION


-----------------------------
NEGOCIO_PROVEEDOR
-----------------------------
ID_NEGOCIO
ID_PROVEEDOR


----------------------------------
NEGOCIO_RECEPCIONISTA
----------------------------------
ID_NEGOCIO
ID_RECEPCIONISTA

Última edición por F3l1p3; 07/02/2008 a las 07:29
  #8 (permalink)  
Antiguo 07/02/2008, 07:46
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Re: Insercion de datos en varias tablas

Deberias utilizar los joins en el select... como el ejemplo que te pase...

Para probar tu consulta, ejecutala primero en el query analizer sin el insert asi podras ver que es lo que trae...

Posiblemente no te trae nada porque tiene las horas y las fechas fijas, tal vez lo que requieres (y funcione) es que sea en un rango... utilizando... >= y <, dependiendo del tipo de datos de los campos de fecha y hora...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
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 00:43.