2011-11-12 14 views
6

Así que tienen las siguientes instrucciones SELECT:Únete resultados "generados" de dos sentencias SELECT con diferentes esquemas en una tabla

SELECT COUNT(A.Award) AS US, SUBSTRING(CAST(M.Year as char(4)), 0 , 4) AS Decade 
FROM Movies M, Awards A 
WHERE {SOME WHERE CLAUSE} 
GROUP BY Decade; 

y

SELECT COUNT(*) AS Total, SUBSTRING(CAST(A2.Year as char(4)), 0 , 4) AS Decade 
FROM Awards A2 
WHERE {SOME WHERE CLAUSE} 
GROUP BY Decade; 

El primero de ellos es "generador" una mesa con columnas (US, Decade) y la segunda es "generar" otra tabla con columnas (Total, Decade). Quiero unirme a esas dos tablas de modo que consiga una mesa ( de Estados Unidos, total, década). ¿Cómo puedo hacerlo?

Respuesta

16

Póngalos en subconsultas y hacer un JOIN:

SELECT a.US, a.decade, b.total FROM 

    (SELECT COUNT(A.Award) AS US, SUBSTRING(CAST(M.Year as char(4)), 0 , 4) AS Decade 
    FROM Movies M, Awards A 
    WHERE {SOME WHERE CLAUSE} 
    GROUP BY Decade) AS a 

INNER JOIN 

    (SELECT COUNT(*) AS Total, SUBSTRING(CAST(A2.Year as char(4)), 0 , 4) AS Decade 
    FROM Awards A2 
    WHERE {SOME WHERE CLAUSE} 
    GROUP BY Decade) AS b 

ON a.decade = b.decade 
+1

Sólo un pequeño problema: preferiría no SELECT * '' pero SELECT a.US, a.DECADE, b.TOTAL' lo que ganó No recibe DECADE dos veces en el resultado. – tobiasbayer

+0

@CodeBrickie: ¡sí, gracias! – knittl

+0

Esto funciona como un encanto :) ¡GRACIAS! –

Cuestiones relacionadas