У меня есть веб-сайт, который будет оценивать пользователей на основе баллов, которые они заработали за определенные действия. Это моя структура базы данных:
pointsentered
1. удостоверение личности
2. Электронная почта
3. Код
pointvalues
1. удостоверение личности
2. Код
3. Название
4. Значение
У меня есть файл, который подключается к pointsentered и передает выбранный пользователем к нему. Поле «Код» соответствует pointvalues.
В pointvalues, «Название» соответствует названию события, которое они завершили. Код представляет собой простой буквенно-цифровой код, который соответствует определенному событию и его значению. «Значение» самоочевидно, так как содержит значение балла, к которому относится событие.
По сути, я хочу иметь сценарий, который
1. Рейтинг всех пользователей (у которых разные адреса электронной почты) на основе введенных баллов в pointsentered (но хватает очки от pointvalues на основании «Кодекса»)
2. Показывает, сколько очков набрал пользователь. Это относится к электронной почте пользователя.
Очевидно, я не ищу кого-то, кто сделал бы это для меня, я просто ищу руководство о том, как начать, так как я заблудился.
Заранее спасибо.
Это должно быть довольно легко достичь с помощью простого запроса в соответствии с:
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). ).
Других решений пока нет …