2

私は2つのテーブルを持っています。

以下に示す最初の表には、ダイヤルされたコールの時間ごとのカウントが特定の数で含まれています

+-------------+---------------+-------+
| Card_no     | Dialled_Count | Hour  |
+-------------+---------------+-------+
| 9913528756  |   9           |  10   |
| 9913528756  |   2           |  11   |
| 9913528756  |   10          |  23   |
+-------------+---------------+-------+

もう 1 つのテーブルは、1 時間ごとに送信されたメッセージの数を表します。

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

これは機能するはずですが、0 ではなく NULL が返されます

于 2013-08-15T17:09:50.447 に答える