|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Имеется таблица `mytable` вида: id | column1 | column2 1 | AAA-123456789 | NULL 2 | AAA-123456781 | Q 3 | AAA-123456711 | W 4 | AAA-123456111 | E 5 | BBB-123456789 | R Имеется строка для поиска " AAA-123456785 " в `column1`. 1-й запрос: Должен возвращать одну строку, значение `column1` в которой максимально близко к искомому при `column2` IS NOT NULL, отнимая в строке поиска символы справа (максимум 3 символа, например). Т.е. ищем " AAA-123456785 ", потом " AAA-12345678 ", " AAA-1234567 ", " AAA-123456 ". Результат: id | column1 | column2 2 | AAA-12345678 1 | Q 2-й запрос: Должен возвращать все строки, в которых находились искомые значения, отсортированные по лучшему совпадению. Результат: id | column1 | column2 2 | AAA-12345678 1 | Q 3 | AAA-1234567 11 | W 4 | AAA-123456 111 | E Либо, если возможно, то вместо исходных значений в `column1`, отобразить только маску поиска, дополненную "_" (без изменения исходных данный в таблице): id | column1 | column2 2 | AAA-12345678 _ | Q 3 | AAA-1234567 __ | W 4 | AAA-123456 ___ | E Понимаю, что у лучшего совпадения будет минимальное количество вхождений, но имеющихся знаний языка, к сожалению, не достаточно, чтобы составить данные запросы, буду очень благодарен за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2019, 04:25 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Пока могу только выбрать интересующие записи таким вот запросом и максимум отсортировать во возрастанию/убыванию какой-нибудь колонки Код: sql 1. 2. 3. 4. 5.
Результат: id column1 column22 AAA-123456781 Q3 AAA-123456711 W4 AAA-123456111 E И я совсем не соображаю, как переделать этот запрос под интересующие меня нужды ( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2019, 12:10 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
DlemfeДолжен возвращать одну строку,А если их, совпадающих без одного последнего символа, окажется две? AAA-12345678 1 и AAA-12345678 9? Dlemfeбуду очень благодарен за помощь.Сперва укажите точную версию сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2019, 22:02 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
AkinaА если их, совпадающих без одного последнего символа, окажется две? AAA-12345678 1 и AAA-12345678 9? Тогда будет интересовать запись, у которой больше id AkinaСперва укажите точную версию сервера. Сервер: MySQL (Localhost via UNIX socket) Тип сервера: MariaDB Версия сервера: 10.0.37-MariaDB - MariaDB Server Версия протокола: 10 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2019, 05:11 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Как я понял, IF в моем случае можно использовать только в процедуре, написал такой код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Возвращает нужную строку, но пока еще не разобрался: - как объявить текстовую ПЕРЕМЕННУЮ и присвоить ей значение 'AAA-123456785' - организовать внутри BEGIN цикл с возможностью выхода из него - как отнимать от переменной со значением 'AAA-123456785' по одному символу справа в цикле из разряда myparam = left(myparam.lenght-1) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2019, 07:05 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Вроде с 1-м запросом справился, но есть вопросы: - возможно ли добиться того же результата без создания процедуры? - не коряво ли всё написано? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2019, 07:53 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Ууу... какая версия-то древнючая... ну а хотя бы максимальная длина этого поля, которое column1 - она сколько? И есть ли серьёзные основания полагать, что в будущем это значение не увеличится? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2019, 21:18 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Dlemfeвозможно ли добиться того же результата без создания процедуры?возможно ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2019, 21:19 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
AkinaУуу... какая версия-то древнючая... ну а хотя бы максимальная длина этого поля, которое column1 - она сколько? И есть ли серьёзные основания полагать, что в будущем это значение не увеличится? Максимальная длина 20 и она точно не увеличится, значения будут колебаться в диапазоне 10-20 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 03:52 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Ну тады навскидку будет что-то типа Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 08:04 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
AkinaНу тады навскидку будет что-то типа Код: sql 1. 2. 3. 4.
Почему-то выдает ошибку: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 13:54 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
Если первый запрос лучше будет выполнять всё-таки процедурой, то добавил в неё входной параметр: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Второй запрос реализовал так: Код: sql 1.
Результат вроде как надо: id column1 column22 AAA-123456781 Q3 AAA-123456711 W4 AAA-123456111 E ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 14:06 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
DlemfeПочему-то выдает ошибку:Я как-то предполагал, что у Вас хватит смекалки заменить многоточие на вполне очевидный промежуточный код... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 14:43 |
|
Запрос на выбор по лучшему совпадению при переборе значений
|
|||
---|---|---|---|
#18+
AkinaDlemfeПочему-то выдает ошибку:Я как-то предполагал, что у Вас хватит смекалки заменить многоточие на вполне очевидный промежуточный код... Я третий день знаком с sql, и впервые вижу то, что Вы использовали в коде, и пока даже не представляю, как это должно работать, можете подсказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 18:27 |
|
|
start [/forum/topic.php?fid=47&gotonew=1&tid=1829249]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 168ms |
0 / 0 |