2010-04-05 19 views
9

¿hay alguna forma de evitar el uso de la tabla tmp?¿cómo se puede unir un conjunto de resultados de consulta con una tabla existente?

estoy usando una consulta con la función de agregado (suma) para generar la suma de cada producto: el resultado es el siguiente:

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

ahora me quiero unir el resultado anterior a otra tabla llamada productos . lo que voy a tener un resumen de la siguiente manera:

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

sé 1 manera de hacer esto es el volcado de la primera resultado de la consulta a una tabla temporal y luego unirse con tabla de productos. hay una mejor manera?

+3

¿Podrían presentar algunos ejemplos para que podamos ayudar? –

+0

Estoy usando una consulta con la función de agregado (suma) para generar la suma de cada producto: el resultado se ve así: product_name | sum (cantidad) product_1 | 100 product_2 | 200 product_5 | 300 ahora quiero unir el resultado anterior a otra tabla llamada productos. para que tenga un resumen como este: product_name | sum (cantidad) product_1 | 100 product_2 | 200 product_3 | 0 product_4 | 0 product_5 | 300 sé que 1 forma de hacerlo es volcar el primer resultado de la consulta a una tabla temporal y luego unirlo con la tabla de productos. hay una mejor manera? – Yang

Respuesta

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

Voy a suponer que quería tener un 'GROUP BY ProductId' en la subconsulta. – Powerlord

+0

@OMG: corregido, gracias. – egrunin

1

Puede hacer varias uniones en una consulta select. ¿Eso resuelve tu problema? Es difícil decir lo que estás pidiendo.

2

Puede hacerlo de esta manera

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