Forum Webscript.Ru

Общие => Базы данных => Тема начата: yennifer от 19 Сентября 2002, 16:06:47

Название: как сделать такой запрос (ы)?
Отправлено: yennifer от 19 Сентября 2002, 16:06:47
помогите плз разобраться - у меня уже все идеи кончились :(

вообщем есть таблица, из нее нужно выбрать строки так, чтобы в текстовом поле name полученной таблицы не было значений, которые бы начинались на одну и ту же букву.
ну и сортировались по алфавиту, но это просто.

главное - как сделать такую выборку???
Название: как сделать такой запрос (ы)?
Отправлено: Alexandr от 19 Сентября 2002, 16:14:40
SELECT DISTINCT(SUBSTRING(name, 1, 1)) as letter FROM your_table ORDER BY letter
Название: как сделать такой запрос (ы)?
Отправлено: Alexandr от 19 Сентября 2002, 16:23:28
Погодь....
Вродь не то.
Может так надо:
Если в базе лежат 2 или более слов, начинающихся на 1 букву, то их печатать не надо, иначе печетаем.
Если задача такова, то так
SELECT count(*) as l_count, SUBSTRING(name, 1, 1) as letter FROM your_table GROUP BY letter  HAVING l_count<2 ORDER BY letter

Как видишь - элементарно.... :-)
Название: как сделать такой запрос (ы)?
Отправлено: yennifer от 19 Сентября 2002, 16:25:17
не, SELECT DISTINCT(SUBSTRING(name, 1, 1)) as letter FROM your_table ORDER BY letter очень хорошо подошел :)
огромное спасибо :)
Название: как сделать такой запрос (ы)?
Отправлено: yennifer от 19 Сентября 2002, 16:31:12
кстати еще вопрос, а почему обратный запрос работать не хочет?

SELECT * FROM your_table where DISTInCT(SUBSTRING(name, 1, 1))=\'$letter\' ???
Название: как сделать такой запрос (ы)?
Отправлено: Alexandr от 19 Сентября 2002, 17:05:12
Цитировать
а почему обратный запрос работать не хочет

А чё сделать-то(выбрать) надо?
....
Так юзни
SELECT * FROM your_table where SUBSTRING(name, 1, 1)=\'$letter\'
Название: как сделать такой запрос (ы)?
Отправлено: rembo от 20 Сентября 2002, 05:32:40
Цитировать
обратный запрос работать не хочет

Потому что DISTINCT используется только после SELECT и до FROM