2011-01-25 88 views
0

基本上,我希望有兩個單獨的SQL查詢,但我希望它們顯示在相同的結果集中。但是,第一個查詢返回多個列,第二個查詢只返回一列。使用兩個闕向SQL結果集添加額外的列

如果我想將第二個查詢的結果簡單地作爲附加列添加到第一個查詢的結果中,我該怎麼做?

查詢1:

SELECT cr.COMMUNICATION_ID, cr.CONSUMER_ID, cr.ACTION_LOG_ID, cal.CONSUMER_ID, cal.TIPS_AMOUNT, cal.LAST_MOD_TIME 
FROM COMMUNICATION_RELEVANCE AS cr 
JOIN consumer_action_log AS cal 
ON cr.ACTION_LOG_ID=cal.ACTION_LOG_ID; 

QUERY 2:

SELECT AVG(TIPS_AMOUNT) AS AVG_TIPS 
FROM CONSUMER_ACTION_LOG 
JOIN COMMUNICATION_RELEVANCE 
ON CONSUMER_ACTION_LOG.SENDER_CONSUMER_ID=COMMUNICATION_RElEVANCE.consumer_id; 

基本上,我想一個UNION,但對於具有不同數量的列的查詢。

+0

如果兩個查詢中的行數不相同會發生什麼? – 2011-01-25 02:39:13

回答

3

我想到你居然要添加一列,而不是一行的其他答案建議

SELECT cr.COMMUNICATION_ID, cr.CONSUMER_ID, cr.ACTION_LOG_ID, 
     cal.CONSUMER_ID, cal.TIPS_AMOUNT, cal.LAST_MOD_TIME, 
     SINGLETON.AVG_TIPS 
FROM COMMUNICATION_RELEVANCE AS cr 
JOIN consumer_action_log AS cal ON cr.ACTION_LOG_ID=cal.ACTION_LOG_ID 
CROSS JOIN 
(
    SELECT AVG(TIPS_AMOUNT) AS AVG_TIPS 
    FROM CONSUMER_ACTION_LOG 
    JOIN COMMUNICATION_RELEVANCE 
    ON CONSUMER_ACTION_LOG.SENDER_CONSUMER_ID=COMMUNICATION_RElEVANCE.consumer_id 
) SINGLETON 

的技巧是,你加盟,產生了單排,單柱AVG值查詢。

0
SELECT AVG(TIPS_AMOUNT) AS AVG_TIPS, NULL, NULL, NULL... 

添加儘可能多的NULL作爲較短的查詢所具有的較少列。

+0

應該能夠使用NULL來代替可能與實際結果相沖突的字符串或值。 – nybbler 2011-01-25 02:24:59

+0

@nybbler:應該還是不應該?我現在嘗試用null和「」兩者都有效,但當然是NULL!=「」。 – 2011-01-25 02:27:53