powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ограничить количество строк с таблицы JOIN
4 сообщений из 4, страница 1 из 1
Ограничить количество строк с таблицы JOIN
    #39818341
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток форумчане
Есть вот такой запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select c.*,
   cl.NAME_ORGANIZATION_FULL as cl_NAME_ORGANIZATION_FULL, cl.TYPE_NP || cl.CITY as cl_NP, cl.ID as cl_CLIENT_ID,
   cc.LIST_PROPOSAL_NUMBER_IN as cc_LIST_PROPOSAL_NUMBER_IN,
   b.BANK_COUNT as b_BANK_COUNT, b.NAME as b_NAME, b.CITY as b_CITY,
   pd.PAID_STATUS as pd_PAID_STATUS, pd.ID as pd_ID,
   a.NUMBER_ACCOUNT as a_NUMBER_ACCOUNT, a.DATE_NUMBER_ACCOUNT as a_DATE_NUMBER_ACCOUNT, a.ID as a_ID,
   ce.EXECUTE_BEGIN as ce_EXECUTE_BEGIN, ce.EXECUTE_END as ce_EXECUTE_END, ce.CONTRACT_FRAME as ce_CONTRACT_FRAME, ce.CONTRACT_NUMBER as ce_CONTRACT_NUMBER, ce.SORT_WORK_LIST as ce_SORT_WORK_LIST,
   ct.PROPOSAL_ID as ct_PROPOSAL_ID,   p.NUMBER_IN as NUMBER_IN
       from CONTRACT c
       left join V_STATISTIC_CONTRACT cc on cc.CONTRACT_ID = c.ID
       join CROSS_T ct on ct.CONTRACT_ID = c.ID and ct.CONTRACT_DELETE is null
       join PROPOSAL p on p.ID = ct.PROPOSAL_ID
       join CLIENT cl on cl.ID = ct.CLIENT_ID
       left outer join BANK b on b.CONTRACT_ID = c.ID
       left outer join PLAN_D pd on pd.CONTRACT_ID = c.ID
       left outer join ACCOUNTANCY a on a.CONTRACT_ID = c.ID
       left outer join CONTRACT_EXTRA ce on ce.CONTRACT_ID = c.ID
           where  c.DEPARTMENT_ID_EXECUTE = 13 and (ce.EXECUTE_END>'25.05.2019' or ce.EXECUTE_END is null)  order by c.ID desc



он выдает результат одну строку (допустим одну строку договора).
Есть таблица « ACCOUNTANCY », в которой содержится номер счета по этому договору.
Вот..
С некоторых пор, по одному договору может стало возможным добавлять несколько номеров счетов (просто в « ACCOUNTANCY » одно и то же CONTRACT_ID ссылка на договор). Следовательно, у меня уже этот запрос выдает несколько одинаковых строк договоров, что не есть хорошо…

Вопрос можно ли как-то в
Код: sql
1.
left outer join ACCOUNTANCY a on a.CONTRACT_ID = c.ID


ограничить выборку до одной строки, или мне в « ACCOUNTANCY » делать дополнительное поле, например, « NUMBER_BASE » (основной счет) и в одном из строк с номерами счетов например ставить в нем значение « 1 », а во всех других « 0 », если в одном договоре много счетов и тогда
left outer join ACCOUNTANCY a on a.CONTRACT_ID = c.ID and NUMBER_BASE=1

Заранее спасибо за ответ
...
Рейтинг: 0 / 0
Ограничить количество строк с таблицы JOIN
    #39818344
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
А еще одно, у меня осталась возможность показывать номер счета в строке договора, если в договоре он ОДИН
...
Рейтинг: 0 / 0
Ограничить количество строк с таблицы JOIN
    #39818346
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010,

LEFT JOIN лучше размещать после INNER JOIN. Это для оптимизатора, он пока сам порядок менять не умеет

> ограничить выборку до одной строки

нет

> left outer join ACCOUNTANCY a on a.CONTRACT_ID = c.ID and NUMBER_BASE=1

так правильней
...
Рейтинг: 0 / 0
Ограничить количество строк с таблицы JOIN
    #39818347
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё правильнее будет разделить текст договора и его поисковые атрибуты. И никогда не
формировать первое из второго.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ограничить количество строк с таблицы JOIN
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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