2010-04-05 13 views
9

c'è un modo per evitare l'uso di tabella tmp?come unire un set di risultati di una query con una tabella esistente?

Sto usando una query con funzione di aggregazione (somma) per generare la somma di ogni prodotto: il risultato è simile al seguente:

product_name | sum(qty) 
product_1 | 100 
product_2 | 200 
product_5 | 300 

Ora voglio unire il risultato di cui sopra a un altro tavolo chiamato prodotti . in modo che io avrò un riassunto in questo modo:

product_name | sum(qty) 
product_1 | 100 
product_2 | 200 
product_3 | 0 
product_4 | 0 
product_5 | 300 

so che 1 modo per farlo è il dump del 1 ° risultato della query a una tabella temporanea poi unirsi con tavolo prodotti. C'è un modo migliore?

+3

La prego di fornire alcuni esempi in modo che possiamo aiutare? –

+0

Sto usando una query con funzione di aggregazione (somma) per generare la somma di ogni prodotto: il risultato è il seguente: product_name | sum (qty) product_1 | 100 product_2 | 200 product_5 | 300 ora voglio unire il risultato sopra ad un'altra tabella chiamata prodotti. così avrò un riassunto come questo: product_name | sum (qty) product_1 | 100 product_2 | 200 product_3 | 0 product_4 | 0 product_5 | 300 so che 1 modo per farlo è il dump del 1 ° risultato della query su una tabella temporanea, quindi aggiungerlo alla tabella dei prodotti. C'è un modo migliore? – Yang

risposta

24
SELECT Product_Name, Total FROM ProductTable x 
LEFT OUTER JOIN (SELECT SUM(qty) as Total, ProductID FROM InventoryTable 
    GROUP BY ProductID) y 
ON x.ProductID = y.ProductID 
+0

Immagino che tu voglia avere un 'GROUP BY ProductId' nella subquery. – Powerlord

+0

@OMG: corretto, grazie. – egrunin

1

È possibile eseguire più join in una query select. Questo risolve il tuo problema? È difficile dire cosa stai chiedendo.

2

Si può fare in questo modo

select table1.productname, virtualtable.qty 
from table1 
inner join (
    select productid, qty 
    from table2 
    group by productid 
) as virtualtable on virtualtable.productid = table1.productid 
Problemi correlati