2013-11-18 3 views
-1

У меня есть проблемы с поиском запроса для моих таблиц, я использую PostgreSQL для моей БДтаблица с левым соединением без учета вычислений левой таблицы столбцов?

У меня есть 2 таблицы таблица A и таблица B, как следовать

table A 
--------------------------------------------------------------- 
| headerid | amount | depart  | arrival  | 
--------------------------------------------------------------- 
| 100   | 10  | australia | german  | 
| 101   | 30  | german  | australia | 
| 102   | 25  | australia | german  | 
| 103   | 20  | irak  | iran  | 

table B 
--------------------- 
| headerid | name | 
--------------------- 
| 100 | a | 
| 100 | b | 
| 101 | c | 
| 102 | d | 
| 103 | e | 

В результате мне нужно


| depart  | arrival  | total amount| name | 
------------------------------------------------------------- 
| australia | german  | 35   |  d |  
| german  | australia | 30   |  c |   
| irak  | iran  | 20   |  e |  

Query я пытался до сих пор

http://sqlfiddle.com/#!12/6c20c/8

+0

Что случилось с 'a' и' b' для 'australia - german'? Вы добавляете один раз, даже если у вас есть 2 ('a' и' b'), и вы удаляете оба из результата, оставив только 'd'. –

+0

Зачем вам нужен стол B для вашего результата? Удаление 'left join b на a.headerid = b.headerid' дает результат, который вы показали. – Konerak

+0

У меня есть вопрос – muhnizar

ответ

0

Я не очень понимаю логику, лежащую в основе, но этот запрос приведет то, что вы ищете:

SELECT depart, arrival, sum(amount) "total amount" , max(b1.name) "name" FROM a 
JOIN (
    SELECT headerid, max(name) "name" FROM b 
    GROUP BY headerid 
) b1 
ON a.headerid = b1.headerid 
GROUP BY depart, arrival 
ORDER BY depart 

Выход:

| DEPART | ARRIVAL | TOTAL AMOUNT | NAME | 
|-----------|-----------|--------------|------| 
| Australia | German |   35 | d | 
| German | Australia |   30 | c | 
|  irak |  iran |   20 | e | 

скрипку here.

+0

спасибо ... вот что мне нужно – muhnizar

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