我有两个表table 1和table 2 table 2包含表1的id
我想显示表1的所有字段,其中表2中的2列具有表1的id,如果表2没有表1的记录(没有表1的id)结果将是表1的内容,其中2列将为空 这是我使用的查询
select *
from tbl_marketing
right join tbl_phonecall on tbl_marketing.db_maid=tbl_phonecall.db_mid
where tbl_marketing.db_status!='Deal Done' and tbl_marketing.db_status!='Refused' and tbl_marketing.db_status!='Not Interested' order by tbl_marketing.db_date desc,tbl_phonecall.db_nextdate desc
但是这个查询并没有给我想要的结果
如果我在表1中没有关于表1中某一行的信息,则该行不会出现在我的结果中
我该如何解决这个问题?!
2017-02-10 12:46:01 vv ddd Answered 2017-01-01 00:00:00 2017-02-24 00:00:00
这是第一张表中的数据:
2017-02-10 12:46:01 vv ddd Answered
这是第二张表中的数据:
2017-01-01 00:00:00 2017-02-24 00:00:00
如果第二个表没有frist表的数据,那么第一个表中的数据不会出现,如果不是就像上面那样 我想如果在第二个表中我没有第一个表的数据,结果就像那样
2017-02-10 12:46:01 vv ddd Answered
结果将是tbl_marketing中的所有字段而不重复,如果在tbl_phonecall中有两行或更多行,并且如果我在tbl_phonecall中没有行为tbl_marketing中的字段,那么它将显示db_due和db_nextdate的空值
答案 0 :(得分:0)
使用左连接(我假设表1是tbl_marketing)..
SELECT tbl_marketing.* , tbl_phonecall.db_due, tbl_phonecall.db_nextdate FROM tbl_marketing LEFT JOIN (SELECT db_mid, max(db_due) db_due, max(db_nextdate) db_nextdate FROM tbl_phonecall group by db_mid) tbl_phonecall ON tbl_marketing.db_maid = tbl_phonecall.db_mid WHERE tbl_marketing.db_status != 'Deal Done' AND tbl_marketing.db_status != 'Refused' AND tbl_marketing.db_status != 'Not Interested' ORDER BY tbl_marketing.db_date DESC, tbl_phonecall.db_nextdate DESC;