![]() |
|
Модераторы: Akina |
![]()
|
|
| insider92 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
Собственно, сабж.
В таблице есть поле примерно такого содержания:
Допустим, мне надо выбрать только те записи, у которых в этом поле есть элемент со вторым параметром равным 3849 и отсортировать их по значению третьего параметра этого элемента. Возможно ли такое? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Пишите хранимую процедуру - такое вполне возможно.
А вот в рамках запроса, когда количество групп не ограничено, такое сделать затруднительно. PS. Может, лучше подумать об изменении структуры? Уж больно криво сделано... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| insider92 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
Структура, конечно, кривая. Но софт уже разработан, большем им никто не занимается, исходников нет.
А с процедурой не подскажете? |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
insider92, почитай про составление процедур. Для твоей задачи изучи ещё LIKE, PATINDEX, SUBSTRING, LEN
|
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
||||
|
||||
| insider92 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
|
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
в вашем случае функция т.к. есть потребность использовать ее в звпросе, причем не одна, а несколько: 1) (is_exist_param) функция которая возвращает true или false(0 или 1) в зависимости от того есть нужное значение в этом поле или нет параметры: а) значение поля б) значение которое ищите в) № параметра 2) (get_element) функция которая возвращает № элемента по значению которое в него входит параметры: а) значение поля б) значение которое ищите в) № параметра 3) (get_value) функция которая возвращает параметр элемента по № элемента и № параметра в этом элементе параметры: а) исходное значение б) № элемента в) № параметра для ваших требований запрос будет выглядеть примерно так:
Это сообщение отредактировал(а) DimW - 24.11.2009, 15:49 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Функции 2 и 3 вполне можно собрать в одну... А если ещё заставить её при отсутствии искомого значения возвращать пустую строку или там -1, то и одной функции достаточно.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
||||
|
||||
| insider92 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
DimW
Спасибо, с запросом разобрались. Но в таком случае самая сложная-то часть здесь - функции. С ними не поможете? |
|||
|
||||
| insider92 |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
В общем, посидел, подумал и пришел к следующему:
Запрос
Функция
Работать - работает, но может можно еще как-то упростить и/или оптимизировать? UPD: Забыл, вот тестовый набор данных поля content:
Это сообщение отредактировал(а) Zloxa - 25.11.2009, 11:49 Присоединённый файл ( Кол-во скачиваний: 3 )
simple.txt 0,48 Kb |
||||||||
|
|||||||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: нет Всего: 44 |
ну и как используя вашу функцию можно реализовать это: Добавлено через 3 минуты и 22 секунды ааа, понятно: а если потребуется искать не по 3849 второго параметра, а по 1001 первого, еще одну функцию писать будете? |
|||
|
||||
| insider92 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
Меня еще беспокоит, что в запросе эта функция 2 раза указана, надеюсь она не будет дважды выполнятся для одного значения аргумента? |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |