powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом
8 сообщений из 8, страница 1 из 1
Помогите с запросом
    #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
Помогите с запросом
    #39391538
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DemitryAНо выдает ошибку: Column does not belong to referenced table.
Column unknown DD.DOC_DATE.
At line 101, column 23.
Подчеркни, какое слово тебе не понятно.
...
Рейтинг: 0 / 0
Помогите с запросом
    #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
Помогите с запросом
    #39391568
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DemitryA,

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

это тебе не LATERAL JOIN чтобы пропихивать условие внутрь ip1.В смысле, никак нельзя внутри JOIN'a ссылаться на поле из таблицы присоединенной снаружи этого JOIN'a? Или через LATERAL JOIN это возможно и я пошел гуглить?
...
Рейтинг: 0 / 0
Помогите с запросом
    #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
Помогите с запросом
    #39391649
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПравда я сильно сомневаюсь в эффективности этого запросаУсловие должно пропихнуться внутрь, afair
...
Рейтинг: 0 / 0
Помогите с запросом
    #39393635
DemitryA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо хотя бы за наводку. Через lateral join нашел как это сделать.
Использовал select (select ... условие с dd.doc_date ). Мою проблему решило.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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