powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Очередной баг Access97 (TOP +UNION +ORDER BY)?
6 сообщений из 6, страница 1 из 1
Очередной баг Access97 (TOP +UNION +ORDER BY)?
    #32548453
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT  Null As CODE, "не опр"  AS  ORMNE, Null AS SORT  FROM ORBASE
  UNION 
SELECT ORBASE.CODE, ORBASE.ORMNE,  1  AS SORT
FROM ORBASE
ORDER BY  SORT ASC, ORMNE ;
 --результат
 
CODE	ORMNE	SORT
	не опр	
 0 	(слж)	 1 
 1 	 000001 	 1 
 2 	 000002 	 1 
 3 	 000003 	 1 
 4 	 000004 	 1 
 5 	Туча	 1 
как только TOP:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT TOP  2  Null As CODE, "не опр"  AS  ORMNE, Null AS SORT  FROM ORBASE
  UNION 
SELECT ORBASE.CODE, ORBASE.ORMNE,  1  AS SORT
FROM ORBASE
ORDER BY  SORT ASC, ORMNE ;
 --результат
 
CODE	ORMNE	SORT
 0 	(слж)	 1 
 1 	 000001 	 1 
 2 	 000002 	 1 
 3 	 000003 	 1 
 4 	 000004 	 1 
	не опр	
 5 	Туча	 1 
(TOP 2 , а не 1 - для проверки гипотезы на отключку ORDER BY для 1 записи)
но:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT ORBASE.CODE, ORBASE.ORMNE,  1  AS SORT
FROM ORBASE
UNION
SELECT TOP  1  NULL AS CODE, "не опр" AS ORMNE, NULL AS SORT
FROM ORBASE
ORDER BY SORT, ORMNE;
 --результат
 
CODE	ORMNE	SORT
	не опр	
 0 	(слж)	 1 
 1 	 000001 	 1 
 2 	 000002 	 1 
 3 	 000003 	 1 
 4 	 000004 	 1 
 5 	Туча	 1 
!!- всего -то поменял местами Select-ы (трах ее тибедох)
Вроде бы всегда писал как в 1-м случае (во 2-м?), и не замечал... В 2к вообще работает только 3, если 1 - ругань на типы данных
а если 2 или так :
Код: plaintext
1.
2.
3.
4.
5.
SELECT TOP  1   Null As CODE, "не опр"  AS  ORMNE, NULL AS SORT   FROM ORBASE
ORDER BY  NULL  , ORMNE
  UNION 
SELECT ORBASE.CODE, ORBASE.ORMNE  AS  ORMNE,clng( 1 ) AS SORT
FROM ORBASE
(тут еще надо понять, какое из полей с Null AS ... он юзает в сортировке)
но при этом тип данных в числовых полях оченно странен - числа отображаются как "нотображаемые символы" - палки какие-та одна-две, даже для шибко больших чисел).

Кому не лень - проверьте. Мож у меня тут что не то завелось? (в джете). Или с головй что - типа "так и должен SQL работать"?
...
Рейтинг: 0 / 0
Очередной баг Access97 (TOP +UNION +ORDER BY)?
    #32548459
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вру: 2 - ругань (с TOP) без TOP (т.е. случай 1) - загогулины.
...
Рейтинг: 0 / 0
Очередной баг Access97 (TOP +UNION +ORDER BY)?
    #32548494
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попоробуйте вместо Null использовать ""
...
Рейтинг: 0 / 0
Очередной баг Access97 (TOP +UNION +ORDER BY)?
    #32548564
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"" тут формально сойдет.(но не годится в цифирьных полях). но результат тот же - игнорирует сортировку по SORT при наличии TOP в первом запросе, и не игнорирует, если Top в последнем.
Что уже интереснее (т.к. Null еще задавал какой-то тип данных, шибко похоже что текстовый, и можно было на это как-то грешить. Мол "неясен способ сортировки").



Что интересно в явных преобразованиях и ORDER BY:
вот это выполняется
Код: plaintext
1.
2.
3.
SELECT TOP  1  clng( 0 ) As CODE,  "" AS SORT  FROM ORBASE
  UNION 
SELECT ORBASE.CODE,  "1" AS SORT
FROM ORBASE
а добавить
Код: plaintext
ORDER BY ...
и ругань - "несоответствие типов данных" (это на clng(0) - если заменить его на текст или Null, то опять работает - но поле (если по нему сортировать) будет текстовым. Для числовой сортировки придется убрать TOP - без него работает и c clng(0))

т.е. при выполнении Top + ORDER BY в UNION могут быть странности.
...
Рейтинг: 0 / 0
Очередной баг Access97 (TOP +UNION +ORDER BY)?
    #32549785
Alexander Say
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
SELECT TOP  2  Null As CODE, "не опр"  AS  ORMNE, Null AS SORT  FROM ORBASE
  UNION 
SELECT ORBASE.CODE, ORBASE.ORMNE,  1  AS SORT
FROM ORBASE
ORDER BY  SORT ASC, ORMNE ;
Не стоит боловаться с объединение в неопределенный тип NULL As CODE , явно описанный тип ORBASE.CODE Столбец ведь прописывается первым SELECT. Как там по правилам 1+NULL=NULL. Лучше наоборот !!!

Код: plaintext
1.
2.
3.
4.
5.
SELECT ORBASE.CODE, ORBASE.ORMNE,  1  AS SORT
FROM ORBASE
UNION
SELECT TOP  1  NULL, "не опр",  0  
FROM ORBASE
ORDER BY SORT, ORMNE;

Это будет правильно..
...
Рейтинг: 0 / 0
Очередной баг Access97 (TOP +UNION +ORDER BY)?
    #32550418
асса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как "лучше" я и так нашел (см выше). (отсутствие CAST в диалекте или что-то в этом роде напрягает - иногда неполохо было бы при SELECT ... INTO , или в вычисляемых полях с IIF SELECT-ов - для выгрузки в Excel -они, если без бубнов, получаются Excel-ем как текстовые.).

Но проблема то существует и с "определенным типом" - а именно
SELECT TOP 1 "" AS SORT ...
UNION
...
ORDER BY SORT, ...

не сортирует по SORT (см 4 июн 04, 13:48 [722493] ) при наличии TOP в первом SELECT-е. А это баг-с. "В наилучшем виде".
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Очередной баг Access97 (TOP +UNION +ORDER BY)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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