СУБД под BSD/UNIX: PostgreSQL, MySQL и другие. Установка, настройка, репликация, резервное копирование и оптимизация.
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
kozak
- сержант
- Сообщения: 240
- Зарегистрирован: 2007-07-20 15:22:54
- Откуда: Запорізька Січ
Непрочитанное сообщение
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" несколько тысяч.
Спасибо!
Діла добрих оновляться, Діла злих згинуть. Т. Г. Шевченко.
kozak
-
Хостинг HostFood.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
- Откуда: Рига
Непрочитанное сообщение
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

Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.
terminus
-
kozak
- сержант
- Сообщения: 240
- Зарегистрирован: 2007-07-20 15:22:54
- Откуда: Запорізька Січ
Непрочитанное сообщение
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

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

Діла добрих оновляться, Діла злих згинуть. Т. Г. Шевченко.
kozak
-
hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Непрочитанное сообщение
hizel » 2010-09-10 19:02:10
дурацкая организация таблицы и как следствие гиморои :]
а как насчет сделать view через regexp и по нему селектить?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
hizel
-
FiL
- ст. лейтенант
- Сообщения: 1377
- Зарегистрирован: 2010-02-05 0:21:40
Непрочитанное сообщение
FiL » 2010-09-16 0:26:05
брррр... нихрена не понял.
При чем тут элемнты с типом=2, если нужно найти некий с типом=0?
Переформулируйте вопрос, пожалуйста. Для тупых, вроде меня.
FiL