Forum Webscript.Ru

Общие => Базы данных => Тема начата: Error202 от 01 Июня 2006, 13:09:40

Название: Последовательный перебор
Отправлено: Error202 от 01 Июня 2006, 13:09:40
запрос ... WHERE (w = \'word1\')or(w = \'word2\')or(w = \'word3\')...

Из таблицы вытаскиваются все записи, где w=word1 или w2 или w3 вперемешку...

А можно ли сделать так, чтобы они вытаскивались так:
Сначала все, где w = w1, затем все, где w2 и т.д.?
Название: Последовательный перебор
Отправлено: html_coder от 01 Июня 2006, 13:25:44
SELECT * FROM `table_name` WHERE (w = \'word1\') OR (w = \'word2\') OR (w = \'word3\') ORDER BY w
Название: Последовательный перебор
Отправлено: Error202 от 01 Июня 2006, 13:31:17
Группировка, то произойдет, а вот последовательности выбора нет, т.е.
в моем случае вытаскиваются сначала все с w2, затем все с w1 и т.д.

А как сделать так, чтобы последовательность w1,w2,w3 сохранилась?
Название: Последовательный перебор
Отправлено: html_coder от 01 Июня 2006, 13:32:58
Цитировать
Error202:
А как сделать так, чтобы последовательность w1,w2,w3 сохранилась?


Какая последовательность?
Название: Последовательный перебор
Отправлено: Error202 от 01 Июня 2006, 13:40:00
Мне нужно, чтобы сначала были выбраны все записи где w = w1, затем все, где w = w2 и др... А ORDER BY сортирует все по алфавиту и порядок совсем другой...
Название: Последовательный перебор
Отправлено: html_coder от 01 Июня 2006, 13:59:26
Ну тогда переваривай такой запрос

SELECT *
FROM
test
WHERE
w = \'word1\'
OR w = \'word2\'
OR w = \'word3\'
ORDER BY
(
CASE w
WHEN \'word1\' THEN 3
WHEN \'word2\' THEN 2
WHEN \'word3\' THEN 1
END
) DESC

Название: Последовательный перебор
Отправлено: Error202 от 01 Июня 2006, 14:01:07
Так штука втом, что word1, 2,3 ... n  - неизвестно сколько слов... Может быть 1, а может быть и 10
Название: Последовательный перебор
Отправлено: html_coder от 01 Июня 2006, 14:04:04
Ну нужный порядок тебе известен, да?

И слова я так понимаю не с неба беруться...

А выражение CASE ты можешь собирать при помощи PHP, и потом просто использовать его в запросе.
Название: Последовательный перебор
Отправлено: Error202 от 01 Июня 2006, 14:06:29
Логично, спасибо!