X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> DISTINCT, Не могу разобраться
FordogeN
FordogeN
Topic Starter сообщение 10.7.2009, 16:53; Ответить: FordogeN
Сообщение #1


Делаю скрипт поиска по товарам и столкнулся со следующей проблемой - бывает попадаются товары с одинаковым названием что я фильтрую через DISTINCT, но при фильтрации я теряю возможность выводить информацию из других полей БЕЗ фильтрации (она на других полях не нужна).
Помогите решить данную проблему.

Вот код моего запроса:
SELECT DISTINCT name FROM items WHERE name LIKE 'поисковая фраза' LIMIT 0, 20;


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
сообщение 10.7.2009, 17:36; Ответить: Banderas
Сообщение #2


Пробуй уточнять таблицу и столбец. Пример:
SELECT DISTINCT name.surename FROM items WHERE name.surename LIKE 'поисковая фраза' LIMIT 0, 20;

Тоесть: таблица.столбец
Или даже можно: база.таблица.столбец хД
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
Topic Starter сообщение 10.7.2009, 18:01; Ответить: FordogeN
Сообщение #3


(Banderas @ 10.7.2009, 19:36) *
Пробуй уточнять таблицу и столбец. Пример:
SELECT DISTINCT name.surename FROM items WHERE name.surename LIKE 'поисковая фраза' LIMIT 0, 20;

Тоесть: таблица.столбец
Или даже можно: база.таблица.столбец хД

в уточнении нет необходимости - и без него все работает. Проблема в другом - в чем, я написал выше.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
сообщение 10.7.2009, 18:11; Ответить: Banderas
Сообщение #4


Может с помощью подзапросов? Сам сильно не разобрался, только прочитал и все... Погугли "подзапросы" и "временные таблицы".
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 11.7.2009, 16:29; Ответить: ZiTosS
Сообщение #5


FordogeN, А скажи мне... Что ты хочешь выводить?
Я не пойму, у тебя есть база товаров, почему ты не мог сделать один и тот же твар и поле к нему с количеством. можно конечно сгруппировать по полю name. Тогда запись будет возращать первую уникальную, а остальные отбрасывать.
Тогда можно написать такой запроc:
SELECT *, COUNT(name) as count FROM items WHERE name LIKE '%поисковая_фраза%' GROUP BY(name) LIMIT 20 ;

Тогда:
У нас будут все поля + count(количество совпадений по полю которому группируем).
% - поставил, чтобы искала не точное совпадение, а вхождение.
А LIMIT 0,20 можно заменить просто на LIMIT 20(Взять только первые 20 записей)


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
сообщение 12.7.2009, 22:01; Ответить: Banderas
Сообщение #6


Я вроде понял... Вот так?
SELECT * name=(SELECT * DISTINCT name) FROM items WHERE name LIKE 'поисковая фраза' LIMIT 0, 20;

или скорее типа так:
SELECT * name=(SELECT * DISTINCT name as `distname`) FROM items WHERE `distname` LIKE 'поисковая фраза' LIMIT 0, 20;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
Topic Starter сообщение 12.7.2009, 23:58; Ответить: FordogeN
Сообщение #7


(Banderas @ 13.7.2009, 0:01) *
Я вроде понял... Вот так?
SELECT * name=(SELECT * DISTINCT name) FROM items WHERE name LIKE 'поисковая фраза' LIMIT 0, 20;

или скорее типа так:
SELECT * name=(SELECT * DISTINCT name as `distname`) FROM items WHERE `distname` LIKE 'поисковая фраза' LIMIT 0, 20;

не знаю что ты понял, но Леха написал именно то что мне нужно)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 29.3.2024, 10:39
Дизайн