powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Совершенно заколебался с запросом!
8 сообщений из 8, страница 1 из 1
Совершенно заколебался с запросом!
    #38315310
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо запрос, вычисляющий остатки на любую конкретную дату.
Есть таблица поставок, есть таблица расхода.
Все я сделал, но теперь опять понадобилось, чтобы запрос НЕ выводил те строки, у которых нулевой остаток!
Это что мне, опять повторять этот громоздкий запрос в WHERE только для того, чтобы сравнить с нулем?
Могу привести запрос, очень лень его выкорчевывать из Delphi, т.к. там в тексте он испещрен многочисленными условиями, берущимися из полей ввода фильтра, но если надо, то приведу.
Я думаю вы представляете о чем я говорю.
...
Рейтинг: 0 / 0
Совершенно заколебался с запросом!
    #38315311
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос что-то типа:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
'SELECT (FLOOR(s.sup_count -'#13#10 +
         '(COALESCE((SELECT SUM(fl.count_sup) FROM flowrate fl WHERE (supply_id=s.id)';

  if PeriodBegin <> 0 then
    ADQueryRemains.SQL.Add(' AND (date_flow < :date_flow)');

  ADQueryRemains.SQL.Text := ADQueryRemains.SQL.Text +
         '), 0)'#13#10 +
         '+ COALESCE((SELECT SUM(fl.count_med) / s.med_count_in_sup FROM flowrate fl WHERE (supply_id=s.id)';

  if PeriodBegin <> 0 then
    ADQueryRemains.SQL.Add(' AND (date_flow < :date_flow)');

  ADQueryRemains.SQL.Text := ADQueryRemains.SQL.Text +
         '), 0))'#13#10 +
         ')),'#13#10 +
         ''' '', sm.rod_padezh_mn,'#13#10 +
         ''' ('', '#13#10 +
         's.sup_count*s.med_count_in_sup -'#13#10 +
         '(COALESCE((SELECT SUM(fl.count_sup*s.med_count_in_sup) FROM flowrate fl WHERE (supply_id=s.id)';

  if PeriodBegin <> 0 then
    ADQueryRemains.SQL.Add(' AND (date_flow < :date_flow)');

  ADQueryRemains.SQL.Text := ADQueryRemains.SQL.Text +
         '), 0)'#13#10 +
         '+ COALESCE((SELECT SUM(fl.count_med) FROM flowrate fl WHERE (supply_id=s.id)';

  if PeriodBegin <> 0 then
    ADQueryRemains.SQL.Add(' AND (date_flow < :date_flow)');

  ADQueryRemains.SQL.Text := ADQueryRemains.SQL.Text +
         '), 0)),'#13#10 +
         ''' '', mm.rod_padezh_mn, '')'''#13#10 +
         ') AS presence_count,';

FROM supply



И теперь, чтобы, скажем отсеять строки с нулевым результатом, хотелось бы просто добавить
WHERE presence_count > 0,
ан нет, придется в WHERE повторять всю эту бодягу и в конце писать '>0'. Нет ли более простого способа?
...
Рейтинг: 0 / 0
Совершенно заколебался с запросом!
    #38315316
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эх, сделал...
...
Рейтинг: 0 / 0
Совершенно заколебался с запросом!
    #38315328
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad, хоть бы написал, как сделал. Надеюсь, с использованием HAVING?
...
Рейтинг: 0 / 0
Совершенно заколебался с запросом!
    #38316107
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirsvnvlad, хоть бы написал, как сделал. Надеюсь, с использованием HAVING?
Нет, тупо повторил запрос в WHERE.
...
Рейтинг: 0 / 0
Совершенно заколебался с запросом!
    #38316236
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladtanglirsvnvlad, хоть бы написал, как сделал. Надеюсь, с использованием HAVING?
Нет, тупо повториил запрос в WHERE.хэвинг даёт тот же эффект, зато куда быстрее в написани
...
Рейтинг: 0 / 0
Совершенно заколебался с запросом!
    #38316386
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirsvnvladпропущено...

Нет, тупо повториил запрос в WHERE.хэвинг даёт тот же эффект, зато куда быстрее в написани
Покажите пример, пожалуйста.
...
Рейтинг: 0 / 0
Совершенно заколебался с запросом!
    #38319834
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,

Код: sql
1.
2.
3.
select id, некое_длинное_выражение as остаток
from thetable
having остаток<>0
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Совершенно заколебался с запросом!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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