powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / выборка данных из 2 связанных таблиц с несколькими sum функциями
19 сообщений из 44, страница 2 из 2
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770300
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

вычисляемый индекс помог?

FIRST 1 D + T в основном запросе без ORDER BY D + T (ASC или DESC) может дать бредятину
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770339
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня фб на него ругается. без него
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770343
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой че опять за бида
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select 
(
select SUM (BRUTTO)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join STATION STATION1 on (PROTOKOL.FK_STATION = STATION1.ID_STATION)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO = 'ГБРУ' 
 )
 - 
 (
select SUM (BRUTTO)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join STATION STATION1 on (PROTOKOL.FK_STATION = STATION1.ID_STATION)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO = 'ГБРУ порожняк' 
 ) from PROTOKOL


как вычесть два числа?
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770350
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select 
(
select SUM (BRUTTO)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join STATION STATION1 on (PROTOKOL.FK_STATION = STATION1.ID_STATION)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO = 'ГБРУ' 
 )
 - 
 (
select SUM (BRUTTO)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join STATION STATION1 on (PROTOKOL.FK_STATION = STATION1.ID_STATION)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO = 'ГБРУ порожняк' 
 ) from RDB$DATABASE
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770356
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select first 1
(
select SUM (BRUTTO)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO = 'ГБРУ' 
 )
 - 
   (
select SUM (BRUTTO)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO = 'ГБРУ порожняк' 
 )
  from PROTOKOL
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770358
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
спасибо, у вас как-то симпотишней решение выглядит
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770371
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerу вас как-то симпотишней решение выглядит
Лично меня тошнит от обоих. Я бы использовал CASE и никаких подзапросов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770382
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

я не думал. Лень
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770398
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
и как же
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770404
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select SUM (CASE 
                    WHEN NAME_CARGO = 'ГБРУ' THEN BRUTTO
                    WHEN NAME_CARGO = 'ГБРУ порожняк' THEN -BRUTTO
                 END)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO IN ('ГБРУ', 'ГБРУ порожняк') 
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770407
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerи как же

ну как-то вот так
Код: sql
1.
2.
3.
4.
5.
6.
select SUM (BRUTTO * case when NAME_CARGO = 'ГБРУ' then  1 else -1 end)
from PROTOKOL
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
where 
      (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
 and NAME_CARGO in ( 'ГБРУ', 'ГБРУ порожняк') 

...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770428
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m and NAME_CARGO in ('ГБРУ', 'ГБРУ порожняк')
Не факт, что это условие нужно здесь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38770481
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovm7m and NAME_CARGO in ('ГБРУ', 'ГБРУ порожняк')
Не факт, что это условие нужно здесь.


Да я без понятия, что там нужно и что нет.
И не особо оно меня интересует.
он хотел пример сумм с кэйсом я ему его и нарисовал
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38771358
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как правильно записать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select 
(
select SUM (BRUTTO)
from PROTOKOL p
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join OBJECT OBJECT1 on (PROTOKOL.FK_OBJECT = OBJECT1.ID_OBJECT)
where 
      (p.D = '07.10.2014' and p.T > '11:21:12' ) 
 and NAME_CARGO = 'Магнетитовая'
 )
 - 
 (
select SUM (BRUTTO)
from PROTOKOL p
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join OBJECT OBJECT2 on (PROTOKOL.FK_OBJECT = OBJECT1.ID_OBJECT)
where 
       (p.D = '07.10.2014' and p.T > '11:21:12' ) 
 and NAME_CARGO = 'Магнет. порожняк'  
 ) from RDB$DATABASE
 where OBJECT1.STATE_NUMBER = OBJECT2.STATE_NUMBER
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38771385
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerкак правильно записать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select 
(
select SUM (BRUTTO)
from PROTOKOL p
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join OBJECT OBJECT1 on (PROTOKOL.FK_OBJECT = OBJECT1.ID_OBJECT)
where 
      (p.D = '07.10.2014' and p.T > '11:21:12' ) 
 and NAME_CARGO = 'Магнетитовая'
 )
 - 
 (
select SUM (BRUTTO)
from PROTOKOL p
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join OBJECT OBJECT2 on (PROTOKOL.FK_OBJECT = OBJECT1.ID_OBJECT)
where 
       (p.D = '07.10.2014' and p.T > '11:21:12' ) 
 and NAME_CARGO = 'Магнет. порожняк'  
 ) from RDB$DATABASE
 where OBJECT1.STATE_NUMBER = OBJECT2.STATE_NUMBER



А чем это отличается от предыдущего????
ps/
- Использовать параметры
- изменить малость структуры таблиц дабы не писать каждый раз
NAME_CARGO = 'чего-то там'
NAME_CARGO = 'чего-то там порожняк'
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38771401
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

этот запрос вообще бредовый.


Код: sql
1.
left outer join OBJECT OBJECT2 on (PROTOKOL.FK_OBJECT = OBJECT1.ID_OBJECT) 



тут не тот алиас используется в условии соединения

Код: sql
1.
where OBJECT1.STATE_NUMBER = OBJECT2.STATE_NUMBER



нельзя связывать два подзапроса в основном запросе

Учи SQL.
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38771424
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да понял как надо
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 select SUM (BRUTTO * case when NAME_CARGO = 'Магнетитовая' then  1 else -1 end)
from PROTOKOL p
left outer join CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
left outer join OBJECT OBJECT1 on (PROTOKOL.FK_OBJECT = OBJECT1.ID_OBJECT)
where 
    --  (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
        (p.D = '07.10.2014' and p.T > '11:21:12' ) 
 and NAME_CARGO in ( 'Магнетитовая',  'Магнет. порожняк'  ) 
 and OBJECT1.STATE_NUMBER = '55844823'
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38771426
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

ах да. Если есть условие по которому идёт фильтрация, то OUTER JOIN явно не нужен.
NAME_CARGO относится к таблице CARGO (вообще в условиях перед полями ставь имена таблиц или алиасов, если в запросе больше 1 таблицы) и
есть условие and NAME_CARGO = 'Магнет. порожняк' в WHERE значит вместо LEFT OUTER JOIN можно использовать INNER JOIN.
...
Рейтинг: 0 / 0
выборка данных из 2 связанных таблиц с несколькими sum функциями
    #38771429
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
учту.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 select SUM (BRUTTO * case when CARGO1.NAME_CARGO = 'Магнетитовая' then  1 else -1 end)
from PROTOKOL p
INNER JOIN CARGO CARGO1 on (PROTOKOL.FK_CARGO = CARGO1.ID_CARGO)
INNER JOIN OBJECT OBJECT1 on (PROTOKOL.FK_OBJECT = OBJECT1.ID_OBJECT)
where 
    --  (D = '07.10.2014' and  T >  '8:00:00' and T <  '21:00:00' ) 
        (p.D = '07.10.2014' and p.T > '11:21:12' ) 
 and CARGO1.NAME_CARGO in ( 'Магнетитовая',  'Магнет. порожняк'  ) 
 and OBJECT1.STATE_NUMBER = '55844823'
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / выборка данных из 2 связанных таблиц с несколькими sum функциями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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