powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите с запросом (UNION ALL и NULL)
4 сообщений из 4, страница 1 из 1
помогите с запросом (UNION ALL и NULL)
    #32551722
Kolya1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Понадобилось мне написать запрос вроде:
SELECT NULL, field1 FROM table1 UNION ALL SELECT field1, field2 FROM table2
А VFP говорит, что он не может определить тип колонки. Это он, видимо, определяет тип по первой выборке. Если опреации выборки поменять местами, то будет все ОК. Но мне надо именно так. Есть ли пути решения проблемы?
...
Рейтинг: 0 / 0
помогите с запросом (UNION ALL и NULL)
    #32551754
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В запросах с union-ами результирующая таблица/курсор строится на первом из всех объединяемых запросов. При этом поля получают и длины, и типы. Null сам по себе - неопределенный тип. Поэтому "разборщику" запросов в такой, как у тебя возникла, ситуации нада помогать.

Например, попробуй так (я предполагаю далее, что table2.field1 - строковое):

m.ll=len(table2.field1)
SELECT padr(NULL,m.ll),field1 FROM table1 UNION ALL SELECT field1, field2 FROM table2

Ну, или что-то в этом роде. Теперь "разборщик" должен понять, что, несмотря на содержимое (Null), поле должно быть текстовым, и определенной длины.
...
Рейтинг: 0 / 0
помогите с запросом (UNION ALL и NULL)
    #32551804
Kolya1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, так работает. Я тоже думал насчет подобного варианта, но вместо PADR пытался использовать ф-ию LEFT, а с ней не работает. Но все дело в том, что запрос строится динамически и тип поля может быть целый, с плавающей точкой, символьный, дата и мемо.
...
Рейтинг: 0 / 0
помогите с запросом (UNION ALL и NULL)
    #32551829
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет мемо - труднее всего, по-моему - ну попробуй, скажем, padr(null,256). Целый и с плавающей точкой - может помочь такое выражение: null+0000000.000000000 (сколько надо) (правда получится и не целое, и не с плавающей точкой, но что-то числовое ;-)).
С датой - ctod (не уверен).
Все это задавать в динамике, определяя типы на лету.
А вообще-то, ВладимирМ недавно приводил решение, похожее вот на это:
Код: plaintext
1.
2.
3.
4.
create cursor xx(x1 t1(l1), x2 t2(l2))
SELECT x1, x2 FROM xx UNION ALL ;
SELECT NULL, field1 FROM table1 UNION ALL ;
SELECT field1, field2 FROM table2

t1, t2 и l1, l2 - соответственно, типы и длины полей x1, x2. Их задаешь какими надо, а уж они потом и определяют типы полей результирующего курсора.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите с запросом (UNION ALL и NULL)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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