2013-04-07 54 views
0

我有三個SQL查詢構建,它們對一組大約八個表起作用。這三者中的每一個在其group by子句中都有相同的參數。我試圖合併這三個查詢,以生成一個單一的輸出表,儘管我嘗試的一切似乎都打破了工作基查詢。通過參數合併具有公共組的查詢

我想看起來像一個輸出;

[heading] [query1 output column] [query2 output column] [query3 output column] 

其中[heading]列是三個現有查詢的group by子句中使用的現有參數。

我意識到我展示我的newbness在這裏,雖然我卡,並在相同的錯誤畫圈的方式太多次去了各地....

編輯*

我認爲代碼片段會令人困惑,儘管這是一個稍微縮寫的版本;

SELECT 
TITLE_COUNT.index, 
COUNT (TITLE_COUNT.TTOTAL) AS TITLES, 
COUNT (AUTHOR_COUNT.TTOTAL) AS AUTHOR 
FROM(
    SELECT 
    index, title, date, 
    COUNT (*) AS TTOTAL 
    FROM (SELECT DISTINCT index, title, date FROM TableP P) P 
    GROUP BY 
    index, title, date 
    ORDER BY 
    index 
) AS TITLE_COUNT, 
(
    SELECT 
    index, 
    COUNT (*) AS TTOTAL 
    FROM (SELECT DISTINCT index, FROM TableM M) M 
    GROUP BY 
    index 
    ORDER BY 
    index 
) AS AUTHOR_COUNT 
WHERE 
TITLE_COUNT.index = AUTHOR_COUNT.index 
GROUP BY 
TITLE_COUNT.index 
; 

我上面的問題是,輸出表中的計數列已經相乘。例如,站沿查詢給我的東西像

TITLE 
index count 
001  12 
002  10 
003  15 

AUTHOR 
index count 
001 2 
002 4 
003 6 

雖然我上面的查詢結果

001 24 
002 40 
003 90 
+4

開始有。 – 2013-04-07 03:38:46

+0

用例和SUM函數。 Google在發佈查詢時對SQL – emaillenin 2013-04-07 03:39:30

+2

進行了非規範化處理,因此您還應該將這些嘗試和錯誤與這些發佈在一起。 – scones 2013-04-07 03:42:46

回答

0

不要重複計算:通過張貼你的SQL代碼

SELECT 
TITLE_COUNT.index, 
TITLE_COUNT.TTOTAL AS TITLES, 
AUTHOR_COUNT.TTOTAL AS AUTHOR 
FROM(
    SELECT 
    index, title, date, 
    COUNT (*) AS TTOTAL 
    FROM (SELECT DISTINCT index, title, date FROM TableP P) P 
    GROUP BY 
    index, title, date 
    ORDER BY 
    index 
) AS TITLE_COUNT 
FULL OUTER JOIN (
    SELECT 
    index, 
    COUNT (*) AS TTOTAL 
    FROM (SELECT DISTINCT index, FROM TableM M) M 
    GROUP BY 
    index 
    ORDER BY 
    index 
) AS AUTHOR_COUNT 
    ON TITLE_COUNT.index = AUTHOR_COUNT.index 
GROUP BY 
    TITLE_COUNT.index