Помощник
|
DISTINCT, Не могу разобраться |
FordogeN
|
Сообщение
#1
|
||
|
|
||
|
|||
Banderas |
10.7.2009, 17:36;
Ответить: Banderas
Сообщение
#2
|
|
Пробуй уточнять таблицу и столбец. Пример:
SELECT DISTINCT name.surename FROM items WHERE name.surename LIKE 'поисковая фраза' LIMIT 0, 20; Тоесть: таблица.столбец Или даже можно: база.таблица.столбец хД |
|
|
FordogeN
|
Сообщение
#3
|
|
Пробуй уточнять таблицу и столбец. Пример: SELECT DISTINCT name.surename FROM items WHERE name.surename LIKE 'поисковая фраза' LIMIT 0, 20; Тоесть: таблица.столбец Или даже можно: база.таблица.столбец хД в уточнении нет необходимости - и без него все работает. Проблема в другом - в чем, я написал выше. -------------------- |
|
|
Banderas |
10.7.2009, 18:11;
Ответить: Banderas
Сообщение
#4
|
|
Может с помощью подзапросов? Сам сильно не разобрался, только прочитал и все... Погугли "подзапросы" и "временные таблицы".
|
|
|
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 записей) |
|
|
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
|
Сообщение
#7
|
|
|
Я вроде понял... Вот так? 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; не знаю что ты понял, но Леха написал именно то что мне нужно)
-------------------- |
|
|
||
|
Текстовая версия | Сейчас: 29.3.2024, 10:39 |