2016-05-25 8 views
4

2つのテーブルを結合すると、以下のテーブルをどのように私が望むものにするかはわかりません。sqlは2つのテーブルを結合しますが、1つのサマリーはもう一方の詳細です

表A:

 
-------------------------------------- 
| id | name | buy time | total | 
-------------------------------------- 
| 1 | A | 3  | 30 | 
-------------------------------------- 
| 2 | B | 1  | 10 | 
-------------------------------------- 

表B:

 
------------------------------- 
| id | orderid | price | 
------------------------------- 
| 1 |  1 | 10 | 
------------------------------- 
| 1 |  2 | 10 | 
------------------------------- 
| 1 |  3 | 10 | 
------------------------------- 
| 2 |  4 | 10 | 
------------------------------- 

私は「左OUTはA.id = B.idにJOINを使用している場合は、表C

 
--------------------------------------------------------- 
| id | name | buy time | total | orderid | price | 
--------------------------------------------------------- 
| 1 | A |  3  | 30 |   |  | 
--------------------------------------------------------- 
| 1 |  |   |  | 1  | 10 | 
--------------------------------------------------------- 
| 1 |  |   |  | 2  | 10 | 
--------------------------------------------------------- 
| 1 |  |   |  | 3  | 10 | 
--------------------------------------------------------- 
| 2 | B |  1  | 10 |   |  | 
--------------------------------------------------------- 
| 2 |  |   |  | 4  | 10 | 
--------------------------------------------------------- 

に参加" 空白領域が重複した値で埋められるため、総所得の合計が正しくない

もう1つの方法は、「0から名前を選択」で、空白を0で埋めることです。列の数が多すぎると災害になります。

したがって、私は私の目標を達成するためにいくつかのより良い方法があるのですか?

答えて

3

は、何が本当に欲しいのは、両方のテーブルのUNIONです:

SELECT id, name, `buy time`, total, null AS orderid, null AS price 
FROM A 

UNION 

SELECT id, null, null, null, orderid, price 
FROM B 
ORDER BY id, name DESC, orderid 

Demo here

1

はあなたが必要とするように見えるUNION ALL

SELECT `id`,`name`,`buy time`,`total`,null,null 
FROM TableA 
UNION ALL 
SELECT id,null,null,null,orderid,price 
FROM TableB 
ORDER BY `id`,`name` ,orderid 

いるので、参加これを不要とする必要はありませんあなたはお互いに決して参加していません。

0

その表情あなたが使用する必要があるようUNION

select id, name, `buy time`, total, null AS orderid, null AS price 
from A 
UNION 
select id, null, null, null, orderid, price 
from B 
order by id, name DESC 
0

選択ID、名前、buytime、合計、受注コード、価格 (

SELECT [id] 
, null as [orderid] 
    ,null as [price], 
    [name] 
    ,[buytime] 
    ,[total] 
    FROM A 
    UNION 

SELECT [id] 
    ,[orderid] 
    ,[price], 
    null as[name] 
    , null as[buytime] 
    ,null as [total] 
FROM B 

)AAとして

から
関連する問題