Principales respuestas
Plano Cartesiano en Inner Join

Pregunta
-
Hola, buen día.
Tengo las siguientes estructuras para las siguientes 2 bases de datos:
Objetivo: unir las dos tablas por día, es decir, deseo una tabla con todos los campos sin que se genere un plano cartesiano.
Yo estoy aplicando este query:
Pero al generarlo se genera un plano cartesiano:
Se está combinando un registro de la primera tabla con todos de la segunda n veces la cantidad de la primera.
Mi primera tabla contiene 913 registros y la segunda 591. El producto de estas es 539,583.
Ya leí muchos temas al respecto, pero ojalá puedan ayudarme, foro.
Saludos.
Gabriel Glez
- Editado Gabriel Glez martes, 18 de septiembre de 2018 19:11
Respuestas
-
Hola Gabriel Glez:
Sin entender muy bien tus tablas, su objetivo y como estan formadas, me da que esa columna Delvry Qty..... tiene que ser una suma de las cantidades para...
CREATE TABLE EMBARQUES ([SHIP-TO-PARTI] NVARCHAR(255), [DELVRY QTY] FLOAT, [SHIPMENT NUMBER] NVARCHAR(255), GOODSLSSUEDTE DATETIME) GO CREATE TABLE ORDENES ([SHIP-TO-PARTI] NVARCHAR(255),[ORDER QTY] FLOAT, [SHIPMENT NUMBER] NVARCHAR(255),CUSPODATE DATETIME) GO INSERT INTO EMBARQUES ([SHIP-TO-PARTI] , [DELVRY QTY] , [SHIPMENT NUMBER] , GOODSLSSUEDTE ) VALUES ('2002567776',3.5,'16303165','20180101'), ('2002567776',4.901,'16303165','20180102'), ('2002567776',3.5,'16303165','20180101'), ('2002567776',3.5,'16303165','20180101') GO INSERT INTO ORDENES ([SHIP-TO-PARTI] ,[ORDER QTY] , [SHIPMENT NUMBER] ,CUSPODATE ) VALUES ('2002567776', 4, '16303165', '20180101'), ('2002567776', 3, '16303165', '20180101') GO select E.GOODSLSSUEDTE, SUM(E.[DELVRY QTY]), O.[SHIP-TO-PARTI],O.CusPoDate, O.[ORDER QTY] --into prueba1 from Ordenes O inner join Embarques E on (O.CusPoDate = E.GoodsLssueDte) and (O.[SHIP-TO-PARTI]= E.[SHIP-TO-PARTI]) GROUP BY E.GOODSLSSUEDTE,O.[SHIP-TO-PARTI],O.CusPoDate, O.[ORDER QTY]
Espero que los tiros vayan por donde te digo.
Ya comentas.
Un saludo
- Marcado como respuesta Gabriel Glez martes, 18 de septiembre de 2018 19:11
Todas las respuestas
-
Hola Gabriel Glez:
Sin entender muy bien tus tablas, su objetivo y como estan formadas, me da que esa columna Delvry Qty..... tiene que ser una suma de las cantidades para...
CREATE TABLE EMBARQUES ([SHIP-TO-PARTI] NVARCHAR(255), [DELVRY QTY] FLOAT, [SHIPMENT NUMBER] NVARCHAR(255), GOODSLSSUEDTE DATETIME) GO CREATE TABLE ORDENES ([SHIP-TO-PARTI] NVARCHAR(255),[ORDER QTY] FLOAT, [SHIPMENT NUMBER] NVARCHAR(255),CUSPODATE DATETIME) GO INSERT INTO EMBARQUES ([SHIP-TO-PARTI] , [DELVRY QTY] , [SHIPMENT NUMBER] , GOODSLSSUEDTE ) VALUES ('2002567776',3.5,'16303165','20180101'), ('2002567776',4.901,'16303165','20180102'), ('2002567776',3.5,'16303165','20180101'), ('2002567776',3.5,'16303165','20180101') GO INSERT INTO ORDENES ([SHIP-TO-PARTI] ,[ORDER QTY] , [SHIPMENT NUMBER] ,CUSPODATE ) VALUES ('2002567776', 4, '16303165', '20180101'), ('2002567776', 3, '16303165', '20180101') GO select E.GOODSLSSUEDTE, SUM(E.[DELVRY QTY]), O.[SHIP-TO-PARTI],O.CusPoDate, O.[ORDER QTY] --into prueba1 from Ordenes O inner join Embarques E on (O.CusPoDate = E.GoodsLssueDte) and (O.[SHIP-TO-PARTI]= E.[SHIP-TO-PARTI]) GROUP BY E.GOODSLSSUEDTE,O.[SHIP-TO-PARTI],O.CusPoDate, O.[ORDER QTY]
Espero que los tiros vayan por donde te digo.
Ya comentas.
Un saludo
- Marcado como respuesta Gabriel Glez martes, 18 de septiembre de 2018 19:11
-
En mi humilde opinion no creo que es suficiente unir las tablas solo por las columnas senialadas. Sera que la columna llamada [Shipment Number] tambien debera formar parte de la relacion?
Con la informacion que has dado no es suficiente para darte una sugerencia.
- Cual es la clave primaria de cada tabla?
- Que contiene cada tabla?
- Como se relacionan (columnas, cardinalidad, etc.)?
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas -