Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом / 8 сообщений из 8, страница 1 из 1
25.01.2017, 19:02
    #39391499
DemitryA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Firebird 2.5
Есть таблицы:
Document
ID DOC_DATE STATUS TYPE1 01.01.2017 1 ADM2 02.01.2017 1 ADM3 01.01.2017 2 IP4 05.01.2017 2 IP
Adm
ID NUM IP_ID1 3 32 6 4
Ip
ID NUMBER3 154 16
Ip_type
ID PAY3 A4 B
Необходимо:
Вывести из таблицы DOCUMENT все документы типа ADM и связанные с ним документы типа IP, у которых дата документа ADM > дата документа IP.
Таблички и запрос очень сильно упростил.
Но запрос у меня такой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select dd.osp_dep_name

from document dd
join adm on adm.id=dd.id
left join (
     select document.id, document.status
     from ip
     join document on document.id=ip.id
     join ip_type on ip_type.id=document.id
         where dd.doc_date > document.doc_date
     ) ip1 on ip1.id=adm.ip_id


Но выдает ошибку: Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
DD.DOC_DATE.
At line 101, column 23.
...
Рейтинг: 0 / 0
25.01.2017, 19:34
    #39391538
Di_LIne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
DemitryAНо выдает ошибку: Column does not belong to referenced table.
Column unknown DD.DOC_DATE.
At line 101, column 23.
Подчеркни, какое слово тебе не понятно.
...
Рейтинг: 0 / 0
25.01.2017, 19:52
    #39391545
DemitryA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Di_LIneDemitryAНо выдает ошибку: Column does not belong to referenced table.
Column unknown DD.DOC_DATE.
At line 101, column 23.
Подчеркни, какое слово тебе не понятно.Мне понятно, что это поле неизвестно программе. У меня вопрос - так и должно быть? Я вроде раньше писал примерно также - и такой ошибки не возникало. Каким образом мне внутри left join можно использовать поле из таблицы dd? Обязательно внутри left join'a! Либо Как можно перестроить запрос, если учесть что внутри этого left join'a я использую (но сюда в пример не написал - укоротил как мог) еще штук 6 join и left join.
...
Рейтинг: 0 / 0
25.01.2017, 20:13
    #39391568
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
DemitryA,

это тебе не LATERAL JOIN чтобы пропихивать условие внутрь ip1.
...
Рейтинг: 0 / 0
25.01.2017, 20:22
    #39391575
DemitryA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Симонов ДенисDemitryA,

это тебе не LATERAL JOIN чтобы пропихивать условие внутрь ip1.В смысле, никак нельзя внутри JOIN'a ссылаться на поле из таблицы присоединенной снаружи этого JOIN'a? Или через LATERAL JOIN это возможно и я пошел гуглить?
...
Рейтинг: 0 / 0
25.01.2017, 20:40
    #39391595
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
DemitryA,

Firebird не поддерживает LATERAL JOIN

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select dd.osp_dep_name
from document dd
join adm on adm.id=dd.id
left join (
     select document.id, document.status, document.doc_date
     from ip
     join document on document.id=ip.id
     join ip_type on ip_type.id=document.id
     ) ip1 on ip1.id=adm.ip_id and dd.doc_date > ip1.doc_date



вот так будет работать. Правда я сильно сомневаюсь в эффективности этого запроса
...
Рейтинг: 0 / 0
25.01.2017, 22:09
    #39391649
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Симонов ДенисПравда я сильно сомневаюсь в эффективности этого запросаУсловие должно пропихнуться внутрь, afair
...
Рейтинг: 0 / 0
28.01.2017, 09:51
    #39393635
DemitryA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Спасибо хотя бы за наводку. Через lateral join нашел как это сделать.
Использовал select (select ... условие с dd.doc_date ). Мою проблему решило.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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