[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Создание запроса мускул
DedMorozzz
Ребят, подскажите, как составить запрос:
выбрать пользователей с самым популярным именем - именем, котрое встречаеться чаще всего (name) -вывести все данные для каждого юзера. пока что получилось только вывести найболее часто встречающееся и кол-во раз ): А как всех?



Спустя 10 минут, 22 секунды (22.12.2009 - 16:50) DedMorozzz написал(а):
Может быть можно было и проще, но сделал так:
SELECT *
FROM `tblusers`
WHERE fname = (
SELECT fname
FROM tblusers
GROUP BY fname
HAVING count( * ) = (
SELECT max( cf_num )
FROM (

SELECT fname, count( * ) AS cf_num
FROM tblusers
GROUP BY fname ) t1 )
)

Спустя 36 секунд (22.12.2009 - 16:50) glock18 написал(а):
DedMorozzz
Конкретнее поставь задачу. Мне мало что понятно из этого.

Спустя 22 минуты, 58 секунд (22.12.2009 - 17:13) DedMorozzz написал(а):
Задача была такова - из Таблицы выбрать все поля в которых поле "fname" встречаеться найбольшее количество раз. Вот как отпимизировал:
SELECT * FROM tblusers
WHERE fname=(SELECT fname FROM (SELECT *,count( * ) AS kol_vo
FROM tblusers
GROUP BY fname
ORDER BY kol_vo
DESC LIMIT 1 ) as t1)

Спустя 4 минуты, 35 секунд (22.12.2009 - 17:18) waldicom написал(а):
SELECT *, count(*) as amount FROM `table` GROUP BY `name` ORDER BY amount DESC 


?

Спустя 3 минуты, 37 секунд (22.12.2009 - 17:21) DedMorozzz написал(а):
Не)) Так выдаёт ВСЮ(!) таблицу + поле эмаунт в котором показываеться сколько раз встречаеться. Необходимо вывести только тех, кто встречаеться чаще всего и без доп полей.
Выше указал уже как сделать. Врядли проще получиться...

Спустя 31 минута, 12 секунд (22.12.2009 - 17:53) waldicom написал(а):
Цитата (DedMorozzz @ 22.12.2009 - 16:13)
SELECT * FROM tblusers
WHERE fname=(SELECT fname FROM (SELECT *,count( * ) AS kol_vo
FROM tblusers
GROUP BY fname
ORDER BY kol_vo
DESC LIMIT 1 ) as t1)

Это простой запрос?!?! С двумя вложенными подзапросами? Гм гм...

Спустя 1 час, 34 минуты, 7 секунд (22.12.2009 - 19:27) glock18 написал(а):
DedMorozzz
проще может не получится, но лучше можно точно. вообще задача при такой постановке подразумевает два filesort'а. если таблица большая будет, то это капец. для count() необходимо ввести поле в таблицу, чтобы не рассчитывать его каждый раз + индекс, чтобы избегать каждый раз сортировки. после этого и запрос облегчить можно будет неплохо.


_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.