mysql — алгоритм ранжирования PHP

У меня есть веб-сайт, который будет оценивать пользователей на основе баллов, которые они заработали за определенные действия. Это моя структура базы данных:

pointsentered
1. удостоверение личности
2. Электронная почта
3. Код

pointvalues
1. удостоверение личности
2. Код
3. Название
4. Значение

У меня есть файл, который подключается к pointsentered и передает выбранный пользователем к нему. Поле «Код» соответствует pointvalues.

В pointvalues, «Название» соответствует названию события, которое они завершили. Код представляет собой простой буквенно-цифровой код, который соответствует определенному событию и его значению. «Значение» самоочевидно, так как содержит значение балла, к которому относится событие.

По сути, я хочу иметь сценарий, который
1. Рейтинг всех пользователей (у которых разные адреса электронной почты) на основе введенных баллов в pointsentered (но хватает очки от pointvalues на основании «Кодекса»)
2. Показывает, сколько очков набрал пользователь. Это относится к электронной почте пользователя.

Очевидно, я не ищу кого-то, кто сделал бы это для меня, я просто ищу руководство о том, как начать, так как я заблудился.

Заранее спасибо.

0

Решение

Это должно быть довольно легко достичь с помощью простого запроса в соответствии с:

SELECT pe.Email, SUM(pv.Value) as 'total_points' FROM pointsentered pe
JOIN pointvalues pv ON pe.Code = pv.Code
GROUP BY pe.Email
ORDER BY total_points DESC

Что здесь происходит, у вас есть две таблицы pointsentered а также pointvalues, pointsentered таблица содержит Email (pe.Email) лица, которому были начислены баллы. Также в этой таблице Code (pe.Code), который соответствует строке в pointvalues Таблица. Таким образом, мы можем запросить против pointsentered а также JOIN pointvalues таблица, чтобы получить список всех присужденных баллов, адрес электронной почты лица, которое было присуждено, и количество присужденных баллов. Мы также можем применить агрегатную функцию к значениям баллов (SUM) и группировать по электронной почте лиц, получая список всех уникальных электронных писем вместе с общим количеством баллов, присужденных этому электронному письму, начиная с наибольшего количества общих баллов (DESC). ).

0

Другие решения

Других решений пока нет …