SQL Server - Unir 3 tablas

 
Vista:

Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 13/07/2005 17:13:54
Hola a todos/as:

Tengo un problemita y queria saber si me pueden ayudar a resolverlo.

Tengo 3 tablas en una Base de Datos de SQL Server y quiero crear una consulta (SP), para que de ellas 3, me cree una sola.

Son tablas de movimientos en Inventario, Recepción de Mercancía, ajustes en inventario, Facturación, etc. Y quiero generar un Kardex.

Las tablas tienen una estructura parecida a esta (Tablas Origen):

Tabla1
Codigo C 6
Cantidad N 20, 3

Tabla2
Cod C 6
Unidades N 20, 3

Tabla3
CodPro C 6
Recibido N 20, 3

Y necesito un SP, que me devuelva la unión de las 3 tablas por el campo código y con la siguiente estructura:

Consulta
cCodigo C 6
nCant N 20, 3

** Otra cosa, Yo modifico las Tablas Origen, a través de SP, pensé una vez, en agregarle código a los SP, para que me graben también en una tabla llamada Kardex, pero no me gusta la idea, ya que las Tablas Origen siempre deben tener la data correcta y el Kardex ser simplemente un consulta de esas tablas. No se que me recomiendas tu.

Agradezco mucho su ayuda y mil gracias por tu tiempo.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Unir 3 tablas

Publicado por Liliana (151 intervenciones) el 14/07/2005 15:53:13
Hola,
No hay muchos datos, pero intentaré ayudarte.
No sé si todos los códigos se encuentran en las tres tablas, ni si el resultado es la suma de las cantidades, pero asumiendo que los códigos pueden no estar en alguna de ellas:

SELECT Codigo = COALESCE (Codigo, Cod, CodPro),
Cantidad = ISNULL(Cantidad,0) + ISNULL(Unidades,0) + ISNULL(Recibido,0)
FROM Tabla1
FULL JOIN Tabla2 ON Codigo = Cod
FULL JOIN Tabla3 ON Codigo = CodPro

La función COALESCE te mostrará el primer valor NO NULO de código.
La forma de relacionar las tablas con FULL JOIN es para que te muestre TODOS los códigos de TODAS las tablas.

Espero que te sirva,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 14/07/2005 16:03:14
Hola Liliana:

Muchas gracias por tu ayuda, pero es algo complicado que eso, son tablas de inventario y necesito generar movimientos de los Productos que se encuentran en inventario.

Leyendo la ayuda del SQL Server me encontre con algo llamado "Almacen de Datos", estoy tratando de buscar informacion referente a eso, para ver si por hay es mejor hacerlo.

Gracias nuevamente y si conoces sobre "Almacen de Datos", te agradesco que compartamos esa informacion.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Unir 3 tablas

Publicado por Liliana (151 intervenciones) el 14/07/2005 17:25:48
Hola,
Creo que "Almacén de Datos" es demasiado complicado para lo que creo que necesitás.
Si me das un ejemplo más concreto de lo que querés hacer con esas tablas, con datos de ejemplo, a lo mejor pueda ayudarte.
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 16/07/2005 02:48:17
Hola Liliana:

jajajajajajaja Tienes razon, Almacen de Datos y Service Manager es algo complicado... De todas maneras me tocara aprenderlo, ya que estoy manejando data del millones de registros, y parece ser una opcion viable a mediano plazo trabajar con Service Manager, para todos los analisis de data que tengo que realizar.

El problema de unir las tablas, no es unirlas en si, si no, que creen una sola estructura como la que necesito... Estube leyendo un poco y tal vez, cree unas vistas de cada tabla, para que de esa manera tengan la misma estructura y luego unir las vistas.

Como te explique anteriormente:

Tabla1
Codigo C 10
Cantidad N 12

Tabla2
CodPro C 10
Unidades N 12

Consulta
cCodigo C 10
nCant N 12

Como te daras cuenta, los campos Codigo y CodPro tienen la misma informacion pero nombres diferentes, al igual que Cantidad y Unidades.

Le problema que vi de las Vistas y pasarle un parametro para que solo me devuelva el Codigo que Yo deseo.

Gracias por tu atencion y ayuda

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Relacionar Tablas...

Publicado por Ruben Dario (1 intervención) el 17/07/2005 20:03:37
Buenas......
necesito saber como relacionar un campo de una tabla con otras...
he utilizado la sentencia FOREIGN kEY pero lo he hecho solo con un solo campo....
por ejemplo necesito relacionar en una tabla llamada inscripcio... el cod_alum, el cod_curso.... Por favor.....
alguien que me ayude gracias.....!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Relacionar Tablas...

Publicado por Liliana (151 intervenciones) el 18/07/2005 13:42:28
Hola,
Copiado de los Libros en Pantalla:

Las restricciones de claves de varias columnas se crean como restricciones de tabla. En la base de datos pubs, la tabla sales incluye una restricción PRIMARY KEY multicolumna. Este ejemplo muestra cómo hacer referencia a esta clave desde otra tabla; el nombre explícito de restricción es opcional.

CONSTRAINT FK_sales_backorder FOREIGN KEY (stor_id, ord_num, title_id)
REFERENCES sales (stor_id, ord_num, title_id)

Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Relacionar Tablas...

Publicado por MARCO (1 intervención) el 17/01/2008 19:28:22
COMO PUEDO RELACIONAR TABLAS CON CODIGOS DE SQL , CUALES SON LOS CODIGOS QUE DEVO UTILIZAR PARA PODER RELACIONARLAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Relacionar Tablas...

Publicado por kikes (1 intervención) el 10/12/2008 17:53:14
come mieerda si no sabes sql no te metas en un guevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Relacionar Tablas...

Publicado por ruth (1 intervención) el 03/11/2010 15:36:26
Como puedo relacionar dos tablas en sql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Relacionar Tablas...

Publicado por fidencio (1 intervención) el 21/10/2010 18:49:18
como relaciono tablas en sql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Unir 3 tablas

Publicado por Liliana (151 intervenciones) el 18/07/2005 13:26:28
Hola,
Te cuento que yo también trabajo con bases demasiado pesadas en cuanto a cantidad de información, y trato de optimizar las consultas al máximo por ese motivo.
Si cuando decís "El problema de unir las tablas, no es unirlas en si, si no, que creen una sola estructura como la que necesito" te referís a crear una cuarta tabla que junte todo lo anterior, entonces podés hacer UNION con INTO y dejarle los nombres que necesites a la nueva tabla.
El uso de VISTAS tiene lo suyo si estás hablando de tablas grandes. A menos que la tabla esté indexada, cada vez que la nombrás, se ejecuta el query que la genera, no es algo que yá esté listo para cuando quieras usarla. Y otra cosa, no podés pasarle parámetros.
Espero que te sirva, si querés explicar cuál es tu necesidad, veo si puedo ayudarte.
Saludos,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 18/07/2005 15:56:46
Hola Liliana:

Mira muchas gracias por el tiempo que te tomas en responderme y por la ayuda prestada.

Realmente lo que necesito es crear una 4 tabla, donde se almacena la informacion de las 3 tablas anteriores, en una sola estructura. Eso es lo que necesito hacer.

Como haria tu para crear esa 4ta tabla?

Gracias nuevamente.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por cierto...RE:Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 18/07/2005 16:05:58
Hola Liliana:

Se me olvidaba decirte que la 4 tabla es la que lleva la columna calculada, o sea, lleba un columna adicional, con el acumulado de las salidas del Inventario.

Si es salida de inventario, se disminuye la cantidad y si es ingreso al inventario, la cantidad aumenta.

Gracias nuevamente

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:por cierto...RE:Unir 3 tablas

Publicado por Liliana (151 intervenciones) el 18/07/2005 17:13:30
Hola,
Espero que te sirva al menos de orientación:

CREATE TABLE #Tabla1
(Codigo Char(10), Fecha1 datetime, Cantidad dec(12))

CREATE TABLE #Tabla2
(CodPro Char(10), Fecha2 datetime, Unidades dec(12))

CREATE TABLE #Tabla3
(cCodigo Char(10), Fecha3 datetime, nCant dec(12))

CREATE Table #Tabla4 (
Codigo char(10),
Fecha datetime,
Suma dec(10),
Resta dec(10))

/* Registros de Prueba */
INSERT #Tabla1
SELECT '1', '20050701', 100 UNION
SELECT '1', '20050710', 25

INSERT #Tabla2
SELECT '1', '20050704', 10 UNION
SELECT '1', '20050706', 25

INSERT #Tabla3
SELECT '1', '20050705', 30 UNION
SELECT '1', '20050709', 20

-- inserta en cuarta tabla toda la información:
INSERT #Tabla4
SELECT Codigo,
Fecha = Fecha1,
Suma = Cantidad,
Resta = 0
FROM #Tabla1
UNION
SELECT CodPro,
Fecha2,
Suma = Unidades,
Resta = 0
FROM #Tabla2
UNION
-- suponiendo que la información de esta tabla resta la cantidad:
SELECT cCodigo,
Fecha3,
Suma = 0,
Resta = nCant
FROM #Tabla3

SELECT * FROM #TABLA1
SELECT * FROM #TABLA2
SELECT * FROM #TABLA3
SELECT * FROM #TABLA4

/* SELECT QUE CALCULA EL SALDO */
SELECT A.Codigo,
A.Fecha,
Suma = A.Suma,
Resta = A.Resta,
Saldo = CONVERT(DEC(12), SUM(B.Suma - B.Resta))
FROM #Tabla4 A
INNER JOIN #Tabla4 B
ON A.Codigo = B.Codigo AND A.Fecha >= B.Fecha
GROUP BY A.Codigo, A.Fecha, A.Suma, A.Resta
ORDER BY 1, 2

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:por cierto...RE:Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 18/07/2005 17:56:46
Hola Liliana:

Gracias.

Entonces entiendo lo siguiente: Tengo un SP para hacer las siguientes tareas, Insert ..., Update...., Delete..., de cada tabla... entonces al final de cada SP, le agrego el codigo para que me agregue, modifique o elimina, tambien en la 4ta tabla?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:por cierto...RE:Unir 3 tablas

Publicado por Liliana (151 intervenciones) el 18/07/2005 18:42:09
Hola,
Me parece que no estamos entendiéndonos.
Pediste una forma de unir tres tablas. Te lo pasé.
Después era sacar un informe con la entrada de tres tablas.
Agregaste el pedido de dar el saldo parcial por cada uno de los movimientos.
Te lo pasé.
La cuarta tabla, es solo a efectos de generar este listado de movimientos por fecha. Se genera en el momento en que quieras el listado.
Te pido por favor, que si no es esto lo que necesitás, envia ejemplos de los datos que tenés, la estructura de las tablas, y la información de salida que necesitas, estarás ayudándome a que te ayude, sino, seguiré adivinando y no te doy lo que buscás.
Saludos,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:por cierto...RE:Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 18/07/2005 23:06:30
Hola Liliana:

Realmente agradezco tu ayuda y creo que en algun momento dejamos de hablar de las mismas cosas, tengo varios problemas y los explicare nuevamente.

1.- Necesito generar un Kardex, asi le llamamos a los movientos de un inventario, tengo varias tablas (puse el ejemplo de 3 solamente), que son de entradas y salidas de inventario, de ellas necesito generar una sola tabla con toda la informacion, seria algo asi como si pidieras el estado de cuenta de un banco, tienes todas las transacciones de depositos y retiros de la cuenta, pero aqui es de inventario y los saldos son las existencias. Y ademas la data de de origen de los datos estan en tablas separadas.

Tengo tablas de Facturacion, Compras, Recepcion de mercancia, movimiento entre almacenes, etc. Todas ellas generan un movimiento que afecta el saldo del inventario y todas tienen diferentes estructuras, te paso algunas:

Tabla1
Fecha = Fecha de Facturacion
Cantidad = Cantidad vendida
Codigo = Codigo del Producto
Transaccion = en este caso seria "FC"
Tipo de movimiento = En este caso seria "S" salida

Tabla2
fFecha = Fecha de recepcion
Unidades = Candidad recibida
Codigo = Codigo del producto
Transaccion = En este caso seria "OC" (Ordenes de compra)
Movimiento = En este caso seria "E" Entrada

Tabla3
fFecMov = Fecha del moviemitno
cCant = Candidad movida
cCodigo = Codigo del producto
cTran = En este caso seria "MI" (Movimiento entre almacenes)
cMov = Seria "S" o "E", dependiendo de si envio o recibo mercancia

Como te daras cuenta, todas almacenan la misma informacion, pero el nombre de los campos es diferente, faltan varias tablas mas, pero eso no importa tanto, si logro unir esas 3, las demas seran mas faciles. De ella necesito tener una 4 tabla o consulta o vista, que me las una y me guarde el resultado como si fuera un Estado de Cuenta Bancario y el saldo seria la cantidad de unidades en existencia, y se hiria restando o sumando, dependiendo del tipo de movimiento, que son Entradas o salidas.

Cada tabla de esas tienen mas de 1millon de registros.

En VFP lo solucione, que cada vez que grabara en una tabla origen, esta me grabara en una tabla llamada Kardex. Pero eso no es lo que quiero hacer aqui en SQL, SQL porque es dificil mantener la integridad de la data, perefiero enfocarme 100% que las tablas de origen, la informacion sea correcta y solo hacer una consulta para generar la informacion de la 4 tabla.

Esta 4ta tabla, sera consultada a travez del codigo del producto y ordenada por fecha.

Este es un problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:por cierto...RE:Unir 3 tablas

Publicado por Foxperto (20 intervenciones) el 19/07/2005 15:04:10
Hola Liliana:

Ya no te preocupes por esto, cree una 4ta tabla y cada vez que agrego un registro en otra, lo agrego a esta al mismo tiempo y asi para modificar y eliminar.

Gracias nuevamente por la ayuda prestada.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:por cierto...RE:Unir 3 tablas

Publicado por Liliana (151 intervenciones) el 19/07/2005 16:59:25
Es una lástima que tengas esa cuarta tabla, tendrás toda la información duplicada, y como decías antes, es más difícil de mantener.
Si te fijás en el mensaje de ayer a las 17:13:30, aunque con datos inventados por mí, estaba haciendo justamente lo que necesitás, solo hay que mirarlo un poquito y reemplazar tus tablas por las que yo usé de prueba.
Saludos y hasta cualquier momento,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:por cierto...RE:Unir 3 tablas

Publicado por Fer (1 intervención) el 02/02/2006 15:57:53
Creo que es una solución muy sencilla la que se está buscando, Foxperto lo que quiere es unir la información de las n tablas que tienen la misma estructura, sólo con nombres de columna diferentes. La solución sería con UNION y no veo la necesidad de crear una tabla extra para almacenar toda esa información, como dice Liliana, sería tener información duplicada y para el tamaño de tablas que tienes pues no sería muy efectivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Porfa Ayundeme =( con Inventarios

Publicado por Mario (1 intervención) el 11/04/2008 07:06:19
Buenas que tal a todos .. me llamo Mario y soy estudiante de Programacion , estoy asiendo un sistema de inventarios pero tengo varias dudasss para crear mis tablitas de mi base de datos ahi va las preguntas..

1.- Partamos del Concepto de cuales la diferencia entre un Kardex y un Inventario .. por lo que yo se el Kardex es un tipo de documento antiguo donde se veia detalladamente los documentos referenciado con un tipo de movimiento ya sea de entrada o de salida de un producto , y el inventario era el saldo total del producto .. (pero comoque la definicion no me convence del todo ,alguien me podria dar una deficinicion mas detallada acerca de estas dos diferencias)..

2.- si Fuera asi con mi pekeño resumen de lasdefinicions de kardex y inventario pues pasaria a analizar algo hacer una tabla llamada kardex donde aki se registrariaaa los ingresos y egresos de losdocumentos con los que surgen los movimientos eestos.. tonces comenzaria a crear mi tabla

Ingresos
en esta tabla ingresos estan todos losdocumentos que han generado movimiento de productos P0001 ya sea factura de compra , notas de credito, guias de translado , etc todo lo k suma stock

Tabla Ingresos
Ndocum codPro Lote cantid
FC001 P0001 1025 2 ---factura de compra
FC002 P0001 1025 2 ---factura de compra
FC003 P0001 1026 3 ---factura de compra
NC001 P0001 1026 2 --- Nota de Credito

Tabla Egresos
Ndocum codPro Lote cantid
FV001 P0001 1025 1 ---factura de venta
FV002 P0001 1025 1 ---factura de venta
FV003 P0001 1026 1 ---factura de venta
GUI01 P0001 1026 1 --- Guia trasnlado de alamcen ingreso

3.- desde mi analisis e creado estasdos tablas supongo que puedo hacer una tabla general queme abarque las dos tablas JUNTAS en una y llamarla TABLA DE KARDEX?????

4.- para sacar reportes de Inventario por lotes o por productos aplicando esto de mis tablas solo lo aria por store procedures ?????

5.- si fuera como pienso egreso y ingresos serian los detalles de :
deta_facturaventa
deta_facturacompra
deta_guiaremision
deta_Notadecredito

y todo docuemnto que aga movimiento del stock ?????
staria bien??

me gustaria que alguien me diera una mano acerca de mi analsisis , si estoy asiendo bienn osea si ta bien mis tablas y de esoo sacar mis reportes , si esta bien hacer una tabla kardexx?? pork e visto que hay algunos que han hecho una tabla inventarios y no se yo no lo veo correncto pork inventarios que yo sepa son reportes que se gneran apartir de consultas de la unnion de esas tablas ............. si estoy errado porfaa corregirme toy aprendiendo =D esperosus respuestas por aki y si pueden ami correo porfa [email protected] y si tiene un modelo logico o entidad relacion de inventarios para estudiarlo porfa pasarmelo muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar