"обратный" SELECT

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kozak
сержант
Сообщения: 240
Зарегистрирован: 2007-07-20 15:22:54
Откуда: Запорізька Січ

"обратный" SELECT

Непрочитанное сообщение kozak » 2010-09-10 17:00:02

Существует таблица db.table:

Код: Выделить всё

+-------------+--------+
+    Code     |  Type  |
+ VARCHAR(20) | INT(1) |
+-------------+--------+
+.....        +....    +
| AA.01.1.0.2 |   2    |
| AA.01.1.0.1 |   2    |
| AA.02.1.0   |   2    |
| AA.02.1     |   0    |
| AA.02.0     |   0    |
+.....        +....    +
+-------------+--------+
Как сформулировать запрос таким образом чтобы выбрать первый Code с наиболее подходящим значением из таблицы Code с типом Type 0 имея код AA.01.1.0.2 не переберая все элементы подряд.

Что-то вроде запроса "SELECT Code FROM db.table WHERE Code LIKE AA.02.0.% LIMIT 1", только в обратном порядке.

Единственный способ, который я пока нашел это создание функции, которая поочередно отнимает последнее число в строке. Это долго, особенно если элементов с значением "2" несколько тысяч.

Спасибо!
Діла добрих оновляться, Діла злих згинуть. Т. Г. Шевченко.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: "обратный" SELECT

Непрочитанное сообщение terminus » 2010-09-10 17:48:41

Сформулировано неясно... Может:

Код: Выделить всё

SELECT Code FROM db.table WHERE Code LIKE AA.02.0.% LIMIT 1 SORT BY Type
SORT BY :unknown:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
kozak
сержант
Сообщения: 240
Зарегистрирован: 2007-07-20 15:22:54
Откуда: Запорізька Січ

Re: "обратный" SELECT

Непрочитанное сообщение kozak » 2010-09-10 18:54:33

terminus писал(а):Сформулировано неясно... Может:

Код: Выделить всё

SELECT Code FROM db.table WHERE Code LIKE AA.02.0.% LIMIT 1 SORT BY Type
SORT BY :unknown:

А откуда мне знать что это AA.02.0.% ? В условии этого не было :)
Діла добрих оновляться, Діла злих згинуть. Т. Г. Шевченко.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: "обратный" SELECT

Непрочитанное сообщение hizel » 2010-09-10 19:02:10

дурацкая организация таблицы и как следствие гиморои :]
а как насчет сделать view через regexp и по нему селектить?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: "обратный" SELECT

Непрочитанное сообщение FiL » 2010-09-16 0:26:05

брррр... нихрена не понял.
При чем тут элемнты с типом=2, если нужно найти некий с типом=0?
Переформулируйте вопрос, пожалуйста. Для тупых, вроде меня.