2011-11-12 33 views
6

Vì vậy, tôi đã báo cáo SELECT sau:Tham gia kết quả "tạo ra" từ hai câu lệnh SELECT với schemas khác nhau vào một bảng

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; 

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; 

Người đầu tiên là "tạo ra" một bảng có cột (US, thập phân) và cột thứ hai là "tạo" một bảng khác có cột (Tổng số, Thập kỷ). Tôi muốn tham gia hai bảng đó để tôi nhận được một bảng (US, Tổng số, Decade). Tôi làm nó như thế nào?

Trả lời

16

Đặt chúng trong truy vấn con và làm một 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

Chỉ cần một vấn đề nhỏ: Tôi không muốn 'SELECT *' nhưng 'CHỌN a.US, a.DECADE, b.TOTAL' vì vậy bạn thắng không nhận được DECADE hai lần trong kết quả. – tobiasbayer

+0

@CodeBrickie: vâng, cảm ơn! – knittl

+0

Điều này hoạt động như một nét duyên dáng :) CẢM ƠN BẠN! –

Các vấn đề liên quan