0

私はmysql5.5を使用しており、以下の2つのテーブルがあります

+--------+---------------+---------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |
+--------+---------------+---------------+
|    115 |       33.3333 |       43.3333 |
|    116 |            70 |            80 |
+--------+---------------+---------------+

+--------+----------------+----------------+
| CALLID | DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+----------------+----------------+
|    117 |             45 |             35 |
+--------+----------------+----------------+

完全に参加すると、私はこれを取得します:

+--------+---------------+---------------+--------+----------------+----------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT | CALLID | DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+---------------+---------------+--------+----------------+----------------+
|    115 |       33.3333 |       43.3333 |   NULL |           NULL |           NULL |
|    116 |            70 |            80 |   NULL |           NULL |           NULL |
|   NULL |          NULL |          NULL |    117 |             45 |             35 |
+--------+---------------+---------------+--------+----------------+---------------+

そして私はこれが必要です:

 +--------+---------------+--------------+-----------------+----------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |  DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+---------------+---------------+-----------------+----------------+
|    115 |       33.3333 |       43.3333 |            NULL |           NULL |
|    116 |            70 |            80 |            NULL |           NULL |
|    117 |          NULL |          NULL |              45 |             35 |
+--------+---------------+---------------+-----------------+---------------+

助言がありますか?

どうもありがとうゼーン、申し訳ありませんが、私がよく説明しない前に、私は次のようにケースを持っていることもできます:

+--------+---------------+---------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |
+--------+---------------+---------------+
|    115 |       33.3333 |       43.3333 |
|    116 |            70 |            80 |
|    117 |            48 |            51 |
+--------+---------------+---------------+

+--------+----------------+----------------+
| CALLID | DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+----------------+----------------+
|    117 |             45 |             35 |
|    118 |             37 |             26 |
+--------+----------------+----------------+

そして私は必要になります:

 +--------+---------------+--------------+-----------------+----------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |  DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+---------------+---------------+-----------------+----------------+
|    115 |       33.3333 |       43.3333 |            NULL |           NULL |
|    116 |            70 |            80 |            NULL |           NULL |
|    117 |            48 |            51 |              45 |             35 |
|    118 |          NULL |          NULL |              37 |             26 |        
+--------+---------------+---------------+-----------------+---------------+
4

3 に答える 3

3

NULL最終結果に適用できないことがわかっている場合は、手動で値を挿入できます。

SELECT CALLID, 
       DL_THROUGHPUT, 
       UL_THROUGHPUT, 
       NULL AS DL_DATA_VOLUME,
       NULL AS UL_DATA_VOLUME
FROM   tbl_1

UNION ALL

SELECT CALLID, 
       NULL, 
       NULL, 
       DL_DATA_VOLUME, 
       UL_DATA_VOLUME
FROM   tbl_2

アップデート:

次を使用できます。

SELECT    a.CALLID,
          b.DL_THROUGHPUT, 
          b.UL_THROUGHPUT, 
          c.DL_DATA_VOLUME, 
          c.UL_DATA_VOLUME
FROM      (
          SELECT CALLID FROM tbl_1 UNION SELECT CALLID FROM tbl_2
          ) a
LEFT JOIN tbl_1 b ON a.CALLID = b.CALLID
LEFT JOIN tbl_2 c ON a.CALLID = c.CALLID
ORDER BY  a.CALLID

SQLFiddleデモ

于 2012-08-01T06:51:55.970 に答える
1

このクエリを試してください-

SELECT
  t.CALLID,
  t1.DL_THROUGHPUT,
  t2.UL_THROUGHPUT,
  t1.DL_DATA_VOLUME,
  t2.UL_DATA_VOLUME
FROM (SELECT CALLID FROM table1 UNION SELECT CALLID FROM table2) t
LEFT JOIN table1 t1
  ON t1.CALLID = t.CALLID
LEFT JOIN table2 t2
  ON t2.CALLID = t.CALLID
于 2012-08-01T07:24:13.503 に答える
0

参加が必要な場合は、次のことを行います。

SELECT callid, dl_throughput, ul_throughput, dl_data_volume, ul_data_volume
  FROM table1
  FULL JOIN table2 USING(callid)
于 2012-08-01T07:26:55.543 に答える