2017-04-19 28 views
2

tbl_marketingMySQL的左不重複的值加入從左表和上次值它

db_maid db_date  db_customer 
1  01-04-2017 xxxx 
2  05-04-2017 lll 
3  08-04-2017 ggg 

tbl_phonecall

db_id db_mid db_due  db_nextdate db_pnote 
1  2  15-04-2017 16-04-2017 cccc 
2  2  17-04-2017 18-04-2017 bbb 
3  1  04-05-2017 16-05-2017 ghghh 

這是我的查詢

選擇

select 
marketing.*, 
phonecall.db_id, 
max(phonecall.db_due) db_due, 
max(phonecall.db_nextdate) db_nextdate, 
phonecall.db_pnote 
from tbl_marketing marketing 
left outer join tbl_phonecall phonecall 
on 
phonecall.db_mid=marketing.db_maid 
group by marketing.db_maid 

我想要的結果是從tbl_marketing所有行,即使有Null值存在於tbl_phonecall 但沒有重複記錄與最後一排從tbl_phoencall形式db_pnote,db_due聯想到由在tbl_marketing順序排從tbl_phonecall

db_due我的查詢沒有給我確切的結果,我想

輸出將是這樣的

# Date  Customer dueDate NextDate  pNote 
2 05-04-2017 lll  17-04-2017 18-04-2017 bbbb 
1 01-04-2017 xxxx  04-05-2017 16-05-2017 ccc 
3 08-04-2017 ggg        ghghh 
+2

[SQL選擇只在色譜柱的最高值的行(可能的重複http://stackoverflow.com/questions/7745609/sql-select-only-rows-with-max-value-on- a-column) – Shadow

+0

最大值是您的最近日期。只需要將左連接添加到組合中即可。 – Shadow

+0

@Shadow請檢查我的查詢上面我創建了一個更新,但我不能從tbl_phonecall –

回答

1

您可以使用這樣的事情:

select marketing.*, 
     phonecall.db_id, 
     phonecall.db_due, 
     phonecall.db_nextdate, 
     phonecall.db_pnote 
from tbl_marketing marketing 
left outer join tbl_phonecall phonecall on phonecall.db_mid=marketing.db_maid 
    and phonecall.db_due=(select max(t2.db_due) from tbl_phonecall t2 
          where t2.db_mid=marketing.db_maid) 
    and phonecall.db_nextdate=(select max(t3.db_nextdate) from tbl_phonecall t3 
          where t3.db_mid=marketing.db_maid) 
0

您是否想要獲得在手機通話的最後日期的所有活動?

SELECT 
    m.* 

    ,p.db_id 
    ,p.db_due 
    ,p.db_nextdate 
    ,p.db_pnote 

FROM tbl_marketing m 

    LEFT JOIN 
    (SELECT 
      db_id 
      ,max(Date) LDate 
     FROM tbl_phonecall 
     GROUP BY db_id 
    ) LastDate 
    ON LastDate.db_mid = m.db_maid 

     LEFT JOIN tbl_phonecall p 
     ON m.db_mid = m.db_maid 
     AND LastDate.LDate = p.Date