簡體   English   中英

MySQL聯接表,並在主表的兩個不同列中使用聯接表中的兩個不同記錄

[英]MySQL join tables and use two different records from joined table in two different columns of main table

我正在嘗試創建新表new_data ,其中將存儲來自兩個不同表的廣告系列的數據。 我有表- campaign_revenue與一列data_date指示......數據日期,另一列revenue 在另一個表- campaign_manager我有列revenuerevenue_yesterday 所以我想是加入兩個表,並把revenuerevenue_yesterdaycampaign_revenuenew_data 結果表中的新記錄應類似於:
campaign_id | campaign_name | revenue | revenue_yesterday
43243242 | testing name | 109.02 | 159.43
這里我們看到的實際上是兩個記錄campaign_revenue並為每個日期和活動編號和名字從campaign_manager 我一直在嘗試很少的變化,但是基於此答案,我最后的嘗試是:

SELECT campaign_id, campaign_name
FROM campaign_manager
UNION
SELECT
    revenue
FROM campaign_revenue
WHERE data_date = '2018-02-13'
UNION
SELECT
    revenue AS revenue_yesterday
FROM campaign_revenue
WHERE data_date = '2018-02-12'

它顯然沒有用,但我希望它能幫助理解我正在努力實現的目標... thx

自我加入似乎是您的初衷。 您可以兩次加入campaign_revenue表,一次加入今天的收入,一次加入昨天的收入。

SELECT
    cm.campaign_id,
    cm.campaign_name,
    cr1.data_date,
    cr1.revenue AS revenue_today,
    cr2.revenue AS revenue_yesterday
FROM campaign_manager cm
INNER JOIN campaign_revenue cr1
    ON cm.campaign_id = cr1.campaign_id
LEFT JOIN campaign_revenue cr2
    ON cm.campaign_id = cr2.campaign_id AND
       cr1.data_date = DATE_ADD(cr2.data_date, INTERVAL 1 DAY)
-- WHERE cr1.data_date = CURDATE()

該答案假定您的日期是連續的,即沒有丟失的日期。

嘗試以下查詢:

SELECT campaign_id, campaign_name FROM campaign_manager WHERE data_date IN ('2018-02-13',  '2018-01-14',  '2017-02-15') 
UNION 
SELECT title FROM data_table WHERE title IN ('2018-02-13',  '2018-01-14')

您需要使用兩個帶有union關鍵字的查詢。

供參考:您可以轉到“ UNION語法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM