Пару дней назад кто-нибудь поможет мне подойти к этому запросу. Я пытаюсь получить первые 10 записей моей БД. Проблема заключается в точках. Когда я использую поле SUM on points, я получаю ровно двойное значение реального значения, если у вас более 1 записи того же пользователя ... Знаете ли вы, что я делаю неправильно? СпасибоSUM возвращает двойное значение
Это код, который возвращает только первую запись пользователя (не суммируется все точки одного и того же пользователя)
SELECT *
FROM commerce
LEFT JOIN points ON points.id_com = commerce.id
LEFT JOIN comments ON comments.id_com = commerce.id AND (comments.validbycom = 1 AND comments.validbyus = 1)
LEFT JOIN winners ON winners.id_com = commerce.id
GROUP BY commerce.id
ORDER BY SUM(points) DESC, COUNT(comments.id_com) DESC, commerce.date ASC, COUNT(winners.id_com) DESC LIMIT 10
Это код, который возвращает точно двойник общая
SELECT SUM(points)
FROM commerce
LEFT JOIN points ON points.id_com = commerce.id
LEFT JOIN comments ON comments.id_com = commerce.id AND (comments.validbycom = 1 AND comments.validbyus = 1)
LEFT JOIN winners ON winners.id_com = commerce.id
GROUP BY commerce.id
ORDER BY SUM(points) DESC, COUNT(comments.id_com) DESC, commerce.date ASC, COUNT(winners.id_com) DESC LIMIT 10
Откуда вы знаете? – Strawberry
Итак - один человек написал вам неправильный запрос. Теперь вы ищете другого человека, чтобы это исправить. Какова ваша роль в этой задаче? Управление? Если это так - это неправильное место, SO - сообщество разработчиков. – zerkms
Я редактирую свой вопрос с двумя запросами, которые я использую, и проблемами, которые у меня есть – Gaby