Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > СУБД, общие вопросы > Сортировка по полю в котором найдено ключевое слов |
Автор: Maksym 27.3.2006, 10:44 | ||
Вот такой простой запрос:
Необходимо чтобы в результирующей выборке сначала шли записи, в которых keyword обнаружился в field1, а после них записи для которых keyword попал в field2. Как бы это сделать? ![]() |
Автор: LSD 27.3.2006, 10:47 | ||
Через uninon:
|
Автор: Maksym 27.3.2006, 11:26 |
LSD Спасибо ![]() А если какая нибудь запись будет удовлетворять обоим SELECTам - он вадь попадет в выборку дважды? или я ошибаюсь.. |
Автор: LSD 27.3.2006, 11:38 |
Да. В принципе можно включить туда дополнительное условие not (like...), но это не здорово с точки зрения производительности. |
Автор: ТоляМБА 27.3.2006, 11:44 | ||||
Если я не ошибаюсь, то в MS SQL Server 2000: так попадут по одной записи на разные условия (если запись есть и по 1-му и по 2-му условию)
а так попадут все записи с поторяющимися значениями по обоим условиям
(развница в запросах в слове ALL) |
Автор: Maksym 27.3.2006, 12:21 |
Работаю в postgresql |
Автор: LSD 27.3.2006, 13:26 |
Попробуй union distinct. |
Автор: Maksym 6.4.2006, 11:12 |
SELECTы успешно выполняются, с помощью UNIONа объединяются, но итоговый набор данных перемешался все равно, отсортирован по первичному ключу, если не указано иное. ![]() |
Автор: Maksym 6.4.2006, 11:48 |
Да, почитал документацию, на результат UNION накладывается общая сортировка. Получить результаты заросов последовательно - не получается. |
Автор: chief39 6.4.2006, 15:58 | ||||
Стоп... насколько знаю, distinct только для селекта, поскольку по умолчанию он гребёт всё. А юнион дублирующиеся строки выбрасывает(дефолт). Ему насильно нао указывать ALL Из-за этого стандарт SQL и попинывали. Maksym, попробуй сиё:
Только что прогнал на оракле. Имхо - везде должно отработать - самый что ни на есть стд. скл. ![]() Добавлено @ 16:06 Аааа... пардон, зачитался комментами - вопрос проглядел... ![]()
Дополнительная колонка - для разделения записей по резалтсетам - в итоге её просто не отображай(не используй) ;) |
Автор: Maksym 13.4.2006, 12:27 |
chief39 не пойму чтото... ввести дополнительную колонку?.. |
Автор: batigoal 13.4.2006, 13:49 |
Да, но не в таблице, а в результате запроса. При обработке этого результата - игнорировать. |
Автор: chief39 13.4.2006, 19:49 | ||||
Это колонка времени запроса, а значения - константы. Ты можешь указывать конкретные поля из селектируемых таблиц или константы. В случае констант - они равны для любой строчки резалтсета. То есть
даст
В твоём случае - это пока единственное и совсем несложное решение твоего вопроса ![]() |
Автор: Maksym 18.4.2006, 14:35 |
chief39 Ну так проблема одинаковых записей не решается... За счет дополнительной виртуальной колонки строки с одинаковыми значениями теряют свою уникальность и UNION их не ообъединяет в одну... |