Автор Тема: Последовательный перебор  (Прочитано 4311 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Последовательный перебор
« : 01 Июня 2006, 13:09:40 »
запрос ... WHERE (w = \'word1\')or(w = \'word2\')or(w = \'word3\')...

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

А можно ли сделать так, чтобы они вытаскивались так:
Сначала все, где w = w1, затем все, где w2 и т.д.?
Космическая игрушка

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Последовательный перебор
« Ответ #1 : 01 Июня 2006, 13:25:44 »
SELECT * FROM `table_name` WHERE (w = \'word1\') OR (w = \'word2\') OR (w = \'word3\') ORDER BY w

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Последовательный перебор
« Ответ #2 : 01 Июня 2006, 13:31:17 »
Группировка, то произойдет, а вот последовательности выбора нет, т.е.
в моем случае вытаскиваются сначала все с w2, затем все с w1 и т.д.

А как сделать так, чтобы последовательность w1,w2,w3 сохранилась?
Космическая игрушка

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Последовательный перебор
« Ответ #3 : 01 Июня 2006, 13:32:58 »
Цитировать
Error202:
А как сделать так, чтобы последовательность w1,w2,w3 сохранилась?


Какая последовательность?

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Последовательный перебор
« Ответ #4 : 01 Июня 2006, 13:40:00 »
Мне нужно, чтобы сначала были выбраны все записи где w = w1, затем все, где w = w2 и др... А ORDER BY сортирует все по алфавиту и порядок совсем другой...
Космическая игрушка

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Последовательный перебор
« Ответ #5 : 01 Июня 2006, 13:59:26 »
Ну тогда переваривай такой запрос

SELECT 
*
FROM 
	
test
WHERE 
	
= \'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

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Последовательный перебор
« Ответ #6 : 01 Июня 2006, 14:01:07 »
Так штука втом, что word1, 2,3 ... n  - неизвестно сколько слов... Может быть 1, а может быть и 10
Космическая игрушка

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Последовательный перебор
« Ответ #7 : 01 Июня 2006, 14:04:04 »
Ну нужный порядок тебе известен, да?

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

А выражение CASE ты можешь собирать при помощи PHP, и потом просто использовать его в запросе.

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Последовательный перебор
« Ответ #8 : 01 Июня 2006, 14:06:29 »
Логично, спасибо!
Космическая игрушка

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28