2014-09-23 4 views
1

Чтобы объяснить, что я пытаюсь сделать, я сделаю гипотетическую ситуацию. (Игнорировать плохой дизайн дб лол)Объединение 2 полей в 1 поле

3 таблицы:

Customers: CustomerID (pk), CustomerName 
AM_Orders: OrderID (pk), OrderDateTime, TotalAmt, CustomerID (fk), OrderType 
PM_Orders: OrderID (pk), OrderDateTime, TotalAmt, CustomerID (fk) OrderType 

Я хочу, чтобы создать запрос, который показывает все клиенты ЛЕВЫЙ присоединенные к AM_Orders и PM_Orders, но я только хочу, чтобы иметь ONE TotalAmt поле, не 2.

Таким образом, результат может быть ....

ID CName TotalAmt OrderType 
    1 Bob  $100  "AM" 
    1 Bob  $10  "AM" 
    3 Steve $20  "PM" 
    4 Tom  $20.45 "AM" 
    5 Andy $21  "PM" 
    6 Jimmy  

Как я могу это сделать?

+3

Вы можете левый Присоединиться к производной таблице, являющейся СОЕДИНЕНИЕМ из двух таблиц Заказов. –

ответ

1

Это немного неоднозначное, но это звучит, как вы хотите, чтобы union all два результата вместе:

select 
    c.CustomerID ID, 
    c.CustomerName Cname, 
    o.TotalAmt, 
    o.OrderType 
from 
    Customers c 
     left join 
    AM_Orders o 
     on c.CustomerID = o.CustomerID 
union all  
select 
    c.CustomerID ID, 
    c.CustomerName Cname, 
    o.TotalAmt, 
    o.OrderType 
from 
    Customers c 
     left join 
    PM_Orders o 
     on c.CustomerID = o.CustomerID 
order by 
    ID; 

или suggeted Tab, объединение первого затем присоединиться. Это может иметь лучшие последствия в случаях, когда есть запись в одном столе, но не в другом:

Смежные вопросы