SQL - unión cruzada en sql

 
Vista:
sin imagen de perfil

unión cruzada en sql

Publicado por BathanF (8 intervenciones) el 11/04/2023 13:19:19
Estoy intentando usar INNER JOIN para unir numerosas tablas.

Aquí está el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
IF OBJECT_ID('tempdb..#tmpRecData') IS NOT NULL
     DROP TABLE #tmpRecData
 
--STEP 1
SELECT DISTINCT
    pr.ChainID, pr.StoreID, pr.SupplierID, pr.ProductID,
    MAX(CAST(pr.ActiveLastDate AS date)) AS 'Active Date'
    --ChainID, SupplierID, StoreID, InvoiceDate, InvoiceNumber, SupplierInvoiceDate, SupplierInvoiceNumber
INTO
    #tmpRecData
FROM
    dbo.[ProductPrices_Retailer] AS pr
LEFT JOIN
    ProductIdentifiers iden ON pr.ProductID = iden.ProductID
                            AND iden.ProductIdentifierTypeID = 2
WHERE
    pr.ChainID = '119121'
    AND pr.ActiveLastDate > '12/01/2016'
GROUP BY
    pr.ProductID, pr.ProductName, iden.IdentifierValue,
    pr.ChainID, pr.StoreID, pr.SupplierID
 
--STEP 2
SELECT
    rec.ChainID, rec.StoreID, rec.SupplierInvoiceNumber,
    rec.TransactionTypeID, rec.SupplierID, rec.SaleDateTime,
    rec.ProductID, rec.UPC, rec.ProductDescriptionReported,
    rec.RawProductIdentifier
FROM
    #tmpRecData t
INNER JOIN
    dbo.StoreTransactions AS rec WITH (NOLOCK) ON rec.ChainID = T.ChainID
WHERE
    rec.ChainID = '119121'
 
DROP TABLE #tmpRecData

Obtengo 725077693 filas al multiplicar 4096 (Paso1) por 145979 (Paso2) (725 millones)
Esta es una gran cantidad de registros, pero usé INNER JOIN; entonces, ¿por qué funcionó como CROSS JOIN?
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

unión cruzada en sql

Publicado por Jorge (7 intervenciones) el 27/04/2023 18:43:50
sql_joins_tipos

asi funcionan los joins, es cosa de entenderlos...
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