2

我有两张桌子。

下面显示的第一个表格包括按特定号码按小时计算的拨打电话计数

+-------------+---------------+-------+
| 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          |
+-------------+---------------+-------+--------------+

任何帮助表示赞赏

提前致谢...

4

2 回答 2

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
于 2013-08-15T17:11:42.777 回答
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

于 2013-08-15T17:09:50.447 回答