|
Delphi 3 и union запросов (трех)
|
|||
---|---|---|---|
#18+
БД Interbase + Дельфи 3. Есть три запроса проводящие выборку каждый из двух таблиц по некоторым критериям. Во всех трех запросах есть головная таблица, из которой проводится выборка необходимой информации (для всех трех запросов - одна) и в каждом запросе - еще одна таблица, определяющая критерии отбора записей из головной таблицы. С точки зрения быстроты отбора записей - лучше всего показал себя UNION из отдельных запросов, чем какое либо другое объединение. Из программы можно задавать любую комбинацию запросов, запрос формируется нормально. Выбор одного запроса либо двух в любой комбинации дает прерасный результат. Выбор всех трех - ругается на то, что одно из полей не найдено. Запуск объединенного запроса из Interbase WISQL дает результат без ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2002, 12:26 |
|
Delphi 3 и union запросов (трех)
|
|||
---|---|---|---|
#18+
Желательно увидеть полный текст запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2002, 20:14 |
|
Delphi 3 и union запросов (трех)
|
|||
---|---|---|---|
#18+
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. При комбинациях из двух блоков - все ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2002, 09:44 |
|
Delphi 3 и union запросов (трех)
|
|||
---|---|---|---|
#18+
Ничего не понимаю. Попробуем сузить область поиска ошибки. Нужно провести следующие эксперименты. 1. Посмотреть, как запрос выглядит в профилере - дельфа ничего не своевольничает? 2. Исключить из запроса поле NOTE. 3. Поменять местами NOTE и FLAT 4. Вставить между FLAT и суммирующим подзапросом константу, например 0. 5. Именовать поле суммирующего подзапроса (as TOTAL_PAY, к примеру) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2002, 05:18 |
|
|
start [/forum/topic.php?fid=58&gotonew=1&tid=2120052]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 286ms |
total: | 407ms |
0 / 0 |