Страница 1 из 1

"обратный" SELECT

Добавлено: 2010-09-10 17:00:02
kozak
Существует таблица 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" несколько тысяч.

Спасибо!

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

Добавлено: 2010-09-10 17:48:41
terminus
Сформулировано неясно... Может:

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

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

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

Добавлено: 2010-09-10 18:54:33
kozak
terminus писал(а):Сформулировано неясно... Может:

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

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

А откуда мне знать что это AA.02.0.% ? В условии этого не было :)

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

Добавлено: 2010-09-10 19:02:10
hizel
дурацкая организация таблицы и как следствие гиморои :]
а как насчет сделать view через regexp и по нему селектить?

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

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