powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема с Full join ом
9 сообщений из 9, страница 1 из 1
Проблема с Full join ом
    #34346556
Don VinNi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как работает join вместе с group by. Он сперва групирует их, а потом обединяет или наоборот?

Проблема такова
Есть два таблицы tab1 и tab2. Из tab1 надо взять 3 столбца а из tab2 2 столбца.

Код: plaintext
1.
2.
3.
4.
5.
6.
                     tab1

ID | Код_тов. |   Ед_измер |   Колич. | Цена   |   
--------- --------- --------------------------
 - |  86069     |      шт    |      10    |  264 , 20  |
 - |  86063     |      шт    |      14    |  476 , 00  |
 - |  94060     |       -    |      -   |  109 , 56  | 

Код: plaintext
1.
2.
3.
4.
5.
6.
                     tab2

ID | Код_тов. |   Ед_измер |   Колич. | Цена   |   
--------- --------- --------------------------
 - |  86069     |      шт    |      20    |  264 , 20  |
 - |  86063     |      шт    |      15    |  476 , 00  |
 - |  94060     |       -    |      -   |  109 , 56  | 

После зароса:
Код: plaintext
select tab1.Ед_измер, sum(tab1.колич) as Колоч_tab1 , sum(tab1.цена) as Цена_tab1, sum(tab2.колич) as Колоч_tab2, sum(tab2.цена) as Цена_tab2 from tab1 full join tab2 on tab1.id=tab2.id where char(tab1.код_тов, 2 )='86'  group by tab1.Ед_измер, temp_prev.g41

Результат таков:
Код: plaintext
1.
2.
3.
4.
Ед_измер |  Колоч_tab1  | Цена_tab1   |   Колоч_tab2  | Цена_tab2  |
--------- --------- ------------------------------------------------
  шт     |       24       |    740 , 20     |      ?        |      ?     |


А мне недо было вывести так:
Код: plaintext
1.
2.
3.
4.
Ед_измер |  Колоч_tab1  | Цена_tab1   |   Колоч_tab2  | Цена_tab2  |
--------- --------- ------------------------------------------------
  шт     |       24       |    740 , 20     |        35       |    740 , 20    |


В чем же проблема?
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34346986
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда я вижу идентификаторы на русском... мне плохо становится...(( бррр....
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34347060
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока проблема в том, что ваш селект использует поля, которых нет в таблицах.
Как эти 2 таблицы связаны?
В вашем селекте они связываются по каким-то полям id, которых нет в таблицах.
Если этот id <=> шт., то вам надо примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select 
  coalesce(a."Ед_измер", b."Ед_измер") u
, a."Колич." aq
, b."Колич." bq
, a."Цена" ap
, b."Цена" bp
from 
(
select "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab1
where substr(char("Код_тов."),  1  , 2 )='86'
group by "Ед_измер"
) a
full join
(
select "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab2
where substr(char("Код_тов."),  1  , 2 )='86'
group by "Ед_измер"
) b on a."Ед_измер"=b."Ед_измер"
;
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34347519
Don VinNi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinПока проблема в том, что ваш селект использует поля, которых нет в таблицах.
Как эти 2 таблицы связаны?
В вашем селекте они связываются по каким-то полям id, которых нет в таблицах.
Если этот id <=> шт., то вам надо примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select 
  coalesce(a."Ед_измер", b."Ед_измер") u
, a."Колич." aq
, b."Колич." bq
, a."Цена" ap
, b."Цена" bp
from 
(
select "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab1
where substr(char("Код_тов."),  1  , 2 )='86'
group by "Ед_измер"
) a
full join
(
select "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab2
where substr(char("Код_тов."),  1  , 2 )='86'
group by "Ед_измер"
) b on a."Ед_измер"=b."Ед_измер"
;



Ну тогда сделаем так. Они связаны по ID т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
                    tab1

ID | Код_тов. |   Ед_измер |   Колич. | Цена   |   
--------- --------- --------------------------
  1  |  86069     |      шт    |      10    |  264 , 20  |
  1  |  86063     |      шт    |      14    |  476 , 00  |
  2  |  94060     |       -    |      -   |  109 , 56  | 

                     tab2

ID | Код_тов. |   Ед_измер |   Колич. | Цена   |   
--------- --------- --------------------------
  1  |  86069     |      шт    |      20    |  264 , 20  |
  1  |  86063     |      шт    |      15    |  476 , 00  |
  2  |  94060     |       -    |      -   |  109 , 56  |

В этом случае че надо сделать что бы получить необходимый результат как показано выше
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34347675
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Don VinNiВ этом случае че надо сделать что бы получить необходимый результат как показано выше
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select 
  a."Ед_измер"
, a."Колич." aq
, b."Колич." bq
, a."Цена" ap
, b."Цена" bp
from 
(
select id, min("Ед_измер") "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab1
where substr(char("Код_тов."),  1  , 2 )='86'
group by id
) a
full join
(
select id, min("Ед_измер") "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab2
where substr(char("Код_тов."),  1  , 2 )='86'
group by id
) b on a.id=b.id
;
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34348949
Don VinNi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein Don VinNiВ этом случае че надо сделать что бы получить необходимый результат как показано выше
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select 
  a."Ед_измер"
, a."Колич." aq
, b."Колич." bq
, a."Цена" ap
, b."Цена" bp
from 
(
select id, min("Ед_измер") "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab1
where substr(char("Код_тов."),  1  , 2 )='86'
group by id
) a
full join
(
select id, min("Ед_измер") "Ед_измер", sum("Колич.") "Колич.", sum("Цена") "Цена"
from tab2
where substr(char("Код_тов."),  1  , 2 )='86'
group by id
) b on a.id=b.id
;


Что значить в вашем запросе aq, bq, ap, bp ?
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34349015
Don VinNi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что значить в вашем запросе aq, bq, ap, bp ?
Это типа псевдоним ? Наверно так
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34349360
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хоть вопрос и не мне, но отвечу: имена колонок, псевдонимы
...
Рейтинг: 0 / 0
Проблема с Full join ом
    #34349420
Don VinNi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем! Тема закрыта!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема с Full join ом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]