2012-08-01 40 views
0

I'm與MySQL 5.5和 我有2代表工作,下面查詢,以工會2個MySQL表

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

我看到您的更新說明。請參閱我更新的解決方案。 – 2012-08-01 07:28:04

回答

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 Demo

+0

非常感謝,工作完美 – Jjreina 2012-08-01 07:36:18

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 
0

,我會去爲:

SELECT callid, dl_throughput, ul_throughput, dl_data_volume, ul_data_volume 
    FROM table1 
    FULL JOIN table2 USING(callid)