我有两张桌子。
下面显示的第一个表格包括按小时划分的拨打电话的计数
+-------------+---------------+-------+
| Card_no | Dialled_Count | Hour |
+-------------+---------------+-------+
| 9913528756 | 9 | 10 |
| 9913528756 | 2 | 11 |
| 9913528756 | 10 | 23 |
+-------------+---------------+-------+
另一个表表示每小时发送的消息计数。
+-------------+---------------+-------+
| Card_no | Message_Count | Hour |
+-------------+---------------+-------+
| 9913528756 | 5 | 6 |
| 9913528756 | 10 | 10 |
| 9913528756 | 12 | 17 |
+-------------+---------------+-------+
我希望将这些表与预期的最终结果联系起来:
+-------------+---------------+-------+--------------+
| Card_no | Dialled_Count | Hour | Message_count|
+-------------+---------------+-------+--------------+
| 9913528756 | 0 | 6 | 5 |
| 9913528756 | 9 | 10 | 10 |
| 9913528756 | 2 | 11 | 0 |
| 9913528756 | 0 | 17 | 12 |
| 9913528756 | 10 | 23 | 0 |
+-------------+---------------+-------+--------------+
感谢任何帮助
提前致谢...
答案 0 :(得分:2)
我想你可能想要使用UNION ALL而不是。
像
这样的东西Select Card_No, Dialled_Count, hour, 0 as Message_Count from tblCall
union all
Select Card_No, 0 as Dialled_Count, hour, Message_Count from tblMessage
在回答OP问题时,我会将查询更改为
SELECT dl.Card_no,
dl.Hour,
IFNULL(c.Dialled_Count,0) Dialled_Count ,
IFNULL(m.Message_count,0) Message_count
FROM (
SELECT DISTINCT
Card_no,
Hour
FROM tblCall
UNION
SELECT DISTINCT
Card_no,
Hour
FROM tblMessage
) dl LEFT JOIN
tblCall c ON dl.Card_no = c.Card_no
AND dl.Hour = c.Hour LEFT JOIN
tblMessage m ON dl.Card_no = m.Card_no
AND dl.Hour = m.Hour
答案 1 :(得分:1)
SELECT * FROM a LEFT JOIN b ON a.Card_no = b.Card_no
UNION
SELECT * FROM a RIGHT JOIN b ON a.Card_no = b.Card_no
这应该可以,但你会得到NULL而不是0