Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ORDER BY и null / 16 сообщений из 16, страница 1 из 1
20.03.2004, 14:32
    #32450215
Larvef
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
Есть запрос

SELECT gd_id, IIF(gd_name LIKE '%строка%', gd_name, null) AS gd_name, IIF(gd_descr LIKE '%строка%', gd_descr,null) AS gd_descr, IIF(gd_compl LIKE '%строка%', gd_compl, null) AS gd_compl FROM Goods WHERE gd_name LIKE '%строка%' OR gd_descr LIKE '%строка%' OR gd_compl LIKE '%строка%' ORDER BY gd_name, gd_descr, gd_compl

Запрос выводит, соответственно, три колонки. Поля, не отвечающие критерию в IIF, становятся null, поля отвечающие, выводят реальное текстовое содержимое. Теперь мне нужно сделать так, чтобы строки, в которых полей с NULL меньше всего, были наверху, а те которые содержат 1 поле с null были ниже по релевантности, те которые имеют 2 поля null еще ниже. Не совсем понимаю, как это сделать.

Помогите, пожалуйста.
...
Рейтинг: 0 / 0
20.03.2004, 14:35
    #32450216
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
Пишем функцию:

function XXX(paramarray a)as integer
dim v as variant,n as integer
n=0
for each v in a
if isnull(v)then n=n+1
next
XXX=n
end function

В запросе добавляем вычисляемое поле:

XXX(field1,dield2,field3,...)

И сортируем по нему.
...
Рейтинг: 0 / 0
20.03.2004, 15:04
    #32450221
alexeyK-home
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
саныч а вроде у вас даже в лифтах кнопки нельзя жать в субботу? ))

можно и так

Код: plaintext
1.
ORDER BY iif(isnull(gd_name),'яяяяя',gd_name),
iif(isnull(gd_descr),'яяяяя',gd_descr), iif(isnull(gd_compl ),'яяяяя',gd_compl )


у MSSQL вроде есть директива для такой сортировки.
в аксессе скорее всего нет
...
Рейтинг: 0 / 0
20.03.2004, 15:07
    #32450223
alexeyK-home
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
мой ответ неправильный я невнимательно прочел постановку задачи
...
Рейтинг: 0 / 0
20.03.2004, 15:20
    #32450230
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
alexeyK-homeсаныч а вроде у вас даже в лифтах кнопки нельзя жать в субботу? ))
Будешь смеяться, но ровно полчаса назад я с этим столкнулся. У нас есть "субботние лифты" - они сами останавливаются на каждом этаже, без нажимания на кнопки. А сегодня я должен был ехать к своим друзьям в Ашдод помогать переезжать на новую квартиру. И ровно полчаса назад они мне позвонили, что все отменяется. Из двух лифтов в доме один еще не пущен, а второй работает в субботнем режиме, но в результате какого-то бага останавливается только на первом этаже и на последнем.
...
Рейтинг: 0 / 0
20.03.2004, 15:28
    #32450234
alexeyK-home
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
надо же а я думал что это шутка местная...)))
...
Рейтинг: 0 / 0
20.03.2004, 15:33
    #32450237
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
На самом деле я не знаю, для чего эти субботние лифты нужны. Потому что в субботу запрещено вообще ездить на чем угодно, если там участвует электричество (даже если двигатель бензиновый, а электричество только для зажигания).
...
Рейтинг: 0 / 0
20.03.2004, 15:40
    #32450240
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
А можно и по-другому:

order by IIF(gd_name LIKE '%строка%', 0, 1) + IIF(gd_descr LIKE '%строка%', 0, 1) + IIF(gd_compl LIKE '%строка%', 0, 1)
...
Рейтинг: 0 / 0
20.03.2004, 15:48
    #32450247
Larvef
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
Владимир Саныч
alexeyK-home

Спасибо огромное!

Владимир Саныч
В итоге сам разобрался. Пришел к твоему последнему варианту независимо :)
...
Рейтинг: 0 / 0
20.03.2004, 15:58
    #32450260
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
Я еще раз перечитал вопрос. Там в операции Like используется знак %. Значит, это adp. И вставлять функцию в селект, наверно, нельзя.
...
Рейтинг: 0 / 0
20.03.2004, 16:33
    #32450277
alexeyK-home
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
а SELECT gd_id, IIF( ?

MDB c SQL92
...
Рейтинг: 0 / 0
20.03.2004, 17:13
    #32450298
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
Насколько я понимаю, в mdb может быть два варианта запроса:
1. Обычный - и тогда никаких %.
2. Pass-Through - и тогда никаких функций, кроме понимаемых сервером.
...
Рейтинг: 0 / 0
20.03.2004, 17:21
    #32450302
alexeyK-home
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
обычный в режиме аксесс 2002
sql89 like '*'
sql92 like '%'
...
Рейтинг: 0 / 0
20.03.2004, 17:26
    #32450307
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
Видимо, я не знаю, что такое SQL92. Это настройка на синтаксис?
...
Рейтинг: 0 / 0
20.03.2004, 17:39
    #32450313
alexeyK-home
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
это стандарт языка sql
можно выбрать в настройках если файл MDB сохранен в формате 2002 (именно конвертирован файл а не запущен в аксессе 2002)
...
Рейтинг: 0 / 0
20.03.2004, 17:42
    #32450316
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY и null
Понял, спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ORDER BY и null / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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