powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите найти лучшее решение
15 сообщений из 15, страница 1 из 1
Помогите найти лучшее решение
    #39331174
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мужики такой вроде просто вопрос, который вызвал у меня затык может переработал

Есть две таблицы users, foods

foods имеет поля id, user_id, tovar, kachestvo

tovar - бывает любым
kachestvo - три параметра low, medium, high

Как собрать правильно по каждому tovar пятерку лидеров из числа юзеров, где на каждый товар будет top-5 по low, top-5 по medium, top-5 по high
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331177
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лидеров имею ввиду по количеству обладаний каждым юзеров tovarov нужного качества

пример top-5 low
ivanov - 36
markov - 15
....

top-5 medium
markov - 19
sergeev -16
....

top-5 high
orlov - 21
ivanov - 15
...
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331294
trew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DonDiego,

Напиши три запроса т.е. для каждого параметра (low, medium, high)
и соедини эти запросы через UNION ALL
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331349
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'low'
union all
SELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'medium'
union all
SELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'high'

а дальше что?
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331354
trew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DonDiego,

19806931
Где top 5 в каждом запросе?
WHERE tovar = '12' -- это не нужно, просто группировка по товару в запросе.
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331367
trew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DonDiegoSELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'low'
union all
SELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'medium'
union all
SELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'high'

а дальше что?

примерно так:
Код: sql
1.
2.
3.
4.
5.
SELECT top 5
user_id 
FROM foods 
WHERE tovar = '12' AND kachestvo = 'low'
GROUP BY user_id 
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331386
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trewDonDiegoSELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'low'
union all
SELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'medium'
union all
SELECT * FROM foods WHERE tovar = '12' AND kachestvo = 'high'

а дальше что?

примерно так:
Код: sql
1.
2.
3.
4.
5.
SELECT top 5
user_id 
FROM foods 
WHERE tovar = '12' AND kachestvo = 'low'
GROUP BY user_id 



Я чего-то не догоняю )) мне же как раз надо топ 5 найти то есть у кого больше всего вхождений и еще и посчитать эти вхождения
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331392
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас с Вашей помощью допер до такого

SELECT user_id
FROM `foods`
WHERE tovar = '12' AND kachestvo = 'low'
GROUP BY user_id
LIMIT 5

выводит список топ 5
а как чтобы он сразу посчитал сколько каждый
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331395
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DonDiego,

Хотя нет это не топ 5 выходит просто первые 5 записей
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331403
trew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DonDiego,

возможно так:
Код: sql
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
SELECT
	user_id, 
	kachestvo
FROM
(
SELECT top 5
	user_id, 
	kachestvo,
	COUNT(user_id) as cc 
FROM foods 
WHERE tovar = '12' AND kachestvo = 'low'
GROUP BY 
	user_id,
	kachestvo		
ORDER BY cc DESC

UNION ALL

SELECT top 5
	user_id, 
	kachestvo,
	COUNT(user_id) as cc 
FROM foods 
WHERE tovar = '12' AND kachestvo = 'medium'
GROUP BY 
	user_id,
	kachestvo		
ORDER BY cc DESC

UNION ALL

SELECT top 5
	user_id, 
	kachestvo,
	COUNT(user_id) as cc 
FROM foods 
WHERE tovar = '12' AND kachestvo = 'high'
GROUP BY 
	user_id,
	kachestvo		
ORDER BY cc DESC
) TT
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331407
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trew,

в MySQL нет конструкции top 5. Есть LIMIT.
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331441
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trew,

Спасибо попробую сейчас, напишу
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331442
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksofttrew,

в MySQL нет конструкции top 5. Есть LIMIT.

вот и я не пойму про top 5, думаю может не знаю я такого, читать стал ))
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331546
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DonDiegomiksofttrew,

в MySQL нет конструкции top 5. Есть LIMIT.

вот и я не пойму про top 5, думаю может не знаю я такого, читать стал ))

Код: sql
1.
2.
3.
4.
5.
select tovar,userId,type,count(*) as 'total'
from table
group by tovar,userId,type

order by tovar,type,`total`



получим
масло вася лоу 12
масло петя ло2 16
.....
тоже для масло медиум, и для масла хай
а также для хлеба, гвоздей, конструкторов-лего и книжек-по-базам-даным :)

и вот теперь задача - для групы масло-лоу взять первые пять строк
для группы масло-медиум 5 записей, для хай 5
и так для каждой групы товар-качество только пять записей.

в шапке форума есть тема - гурпировка, нумерация , нумерация в группе

дальше сделать как там написано
групой у тебя выступает не одно поле а два - товар и качество, остальное всё как в тех примерах
...
Рейтинг: 0 / 0
Помогите найти лучшее решение
    #39331608
DonDiego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прочитал не понял
кто-нить может показать правильную конструкцию?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите найти лучшее решение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]