powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 3 и union запросов (трех)
4 сообщений из 4, страница 1 из 1
Delphi 3 и union запросов (трех)
    #32024173
Dr.Maniac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БД Interbase + Дельфи 3.
Есть три запроса проводящие выборку каждый из двух таблиц по некоторым критериям. Во всех трех запросах есть головная таблица, из которой проводится выборка необходимой информации (для всех трех запросов - одна) и в каждом запросе - еще одна таблица, определяющая критерии отбора записей из головной таблицы.
С точки зрения быстроты отбора записей - лучше всего показал себя UNION из отдельных запросов, чем какое либо другое объединение.
Из программы можно задавать любую комбинацию запросов, запрос формируется нормально. Выбор одного запроса либо двух в любой комбинации дает прерасный результат. Выбор всех трех - ругается на то, что одно из полей не найдено. Запуск объединенного запроса из Interbase WISQL дает результат без ошибок.
...
Рейтинг: 0 / 0
Delphi 3 и union запросов (трех)
    #32024471
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Желательно увидеть полный текст запроса
...
Рейтинг: 0 / 0
Delphi 3 и union запросов (трех)
    #32024672
Dr.Maniac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT OBJECT.NAME1 ,OBJECT.NAME2,OBJECT.NAME3,
OBJECT.N_PROT,OBJECT.N_ENTRY,OBJECT.CITY,
OBJECT.S_PASSPORT ,OBJECT.N_PASSPORT,OBJECT.REGION,
OBJECT.STREET,OBJECT.BUILDING,OBJECT.FLAT,
OBJECT.NOTE,(SELECT SUM_PAY FROM PAY
WHERE OBJECT.N_ENTRY=PAY.OBJECT AND PAY.TYPE=1
PLAN (PAY INDEX (PAY_MAIN)))
FROM HISTORY H LEFT JOIN OBJECT ON OBJECT.N_ENTRY = H.OBJECT
WHERE H.PLACE_C IN (34,4585,6183,7364,10601,15536)
UNION

SELECT OBJECT.NAME1 ,OBJECT.NAME2,OBJECT.NAME3,
OBJECT.N_PROT,OBJECT.N_ENTRY,OBJECT.CITY,
OBJECT.S_PASSPORT ,OBJECT.N_PASSPORT,OBJECT.REGION,
OBJECT.STREET,OBJECT.BUILDING,OBJECT.FLAT,
OBJECT.NOTE,(SELECT SUM_PAY FROM PAY
WHERE OBJECT.N_ENTRY=PAY.OBJECT AND PAY.TYPE=1
PLAN (PAY INDEX (PAY_MAIN)))
FROM AROLSEN_TEXT A LEFT JOIN OBJECT ON OBJECT.N_ENTRY = A.OBJECT
WHERE ( A.REESTRID IN (854,1265,1563) OR A.ADDINFO CONTAINING 'Вена')

UNION

SELECT OBJECT.NAME1 ,OBJECT.NAME2,OBJECT.NAME3,
OBJECT.N_PROT,OBJECT.N_ENTRY,OBJECT.CITY,
OBJECT.S_PASSPORT ,OBJECT.N_PASSPORT,OBJECT.REGION,
OBJECT.STREET,OBJECT.BUILDING,OBJECT.FLAT,
OBJECT.NOTE,(SELECT SUM_PAY FROM PAY
WHERE OBJECT.N_ENTRY=PAY.OBJECT AND PAY.TYPE=1
PLAN (PAY INDEX (PAY_MAIN)))
FROM CLIENT_TEXT C LEFT JOIN OBJECT ON OBJECT.N_ENTRY = C.OBJECT WHERE
(C.AREA_NAME CONTAINING 'Вена' OR C.WORK_TYPE CONTAINING 'Вена')

Пишет - не найдено поле NOTE. При комбинациях из двух блоков - все ок.
...
Рейтинг: 0 / 0
Delphi 3 и union запросов (трех)
    #32024765
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понимаю.
Попробуем сузить область поиска ошибки.
Нужно провести следующие эксперименты.
1. Посмотреть, как запрос выглядит в профилере - дельфа ничего не своевольничает?
2. Исключить из запроса поле NOTE.
3. Поменять местами NOTE и FLAT
4. Вставить между FLAT и суммирующим подзапросом константу, например 0.
5. Именовать поле суммирующего подзапроса (as TOTAL_PAY, к примеру)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 3 и union запросов (трех)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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