Таким образом я получил этот запрос:SQL LEFT JOIN WHERE не отображается правильный результат
Структура данных: Пользователи идентификатор --- inlog ---- имя ---- больше материала
llntoets идентификатор --- код ---- ---- inlog больше вещей
oefeningen идентификатор --- --- статус плеер ---- morestuff
(inlog и плеер всегда одни и те же значения а пользователь)
SELECT
// Some other stuff working
SUM(o.status) AS oefn
FROM users AS u
LEFT JOIN llntoets AS l
ON (u.inlog = l.inlog)
LEFT JOIN oefeningen AS o
ON (u.inlog = o.speler) AND o.status = 'afgewerkt'
WHERE
code = '$code'
GROUP BY l.inlog
ORDER BY klas ASC, klasnr ASC
Все работает отлично, за исключением 1 вещи переменной oefn. Он показывает число, иногда оно показывает правильное значение, и иногда оно показывает значение, которое намного выше, чем должно быть. Кто-то сказал мне, что это может быть из-за GROUP BY. Может кто-нибудь помочь мне PLS?
Предполагается подсчитать общие записи из таблицы oefeningen, где status = 'afgewerkt', и где speler является inlog от пользователей. Спасибо, если у вас возникнут другие вопросы, попросите объяснить больше.
У вас, вероятно, есть отношения 1: M, которых вы не ожидаете. Включите l.inlog в свой выбор, закажите его и удалите группу по инструкции. Теперь найдите один из значений l.inlog, который имел гораздо более высокий SUM, чем вы ожидали, и посмотрите, почему у вас есть эти строки, включенные в ваш выбор. – Carth