Intereting Posts
PHP preg_match_all () для вывода всех php-тегов PHP – введите дату в mysql инкрементный счетчик mysql Как читать Windows, зарегистрированное имя пользователя с помощью PHP / IIS Обнаружение Ajax в PHP и уверенность в том, что запрос был с моего собственного сайта автоматически планировать выполнение скрипта php в определенное время Отображение данных таблицы с помощью php & mysqli Объединение двух запросов с одним и тем же параметром привязки Предупреждение: Заголовок может содержать не более одного заголовка, обнаружена новая строка php найти номер недели с определенной даты Тестирование модулей symfony: добавление / изменение формы Скрытие или удаление имени контроллера в URL-адресе с использованием маршрутов для seo-цели = codeigniter загрузить файл изображения в хранилище Google Cloud Точка в алгоритме Polygon иногда дает неправильные результаты Только замените собственный URL веб-сайта в тексте с помощью HTML-ссылок

MySQL LEFT JOIN запрос показывает то же значение

Я пытаюсь сделать так, чтобы этот запрос подсчитывал строки из другой таблицы, у которой есть имя пользователя, а затем смерти, у которой есть убийца. В таблице статистики есть 1 строка для имени пользователя, но несколько строк в таблице pvp с именем пользователя. Столбец смерти – это то же самое количество, что и столбцы «Убивает» по какой-то причине, кто-нибудь знает, почему? Вот мой запрос. Вот скрипт sql, я думаю, что я правильно понял, как использовать sqlfiddle: http://sqlfiddle.com/#!2/b793b/1

SELECT *, COUNT(pvptable.killer) as kills, COUNT(pvptable.username) as deaths, ROUND(COUNT(pvptable.killer) / COUNT(pvptable.username), 2) as kd FROM stats as st LEFT JOIN pvp as pvptable ON pvptable.killer=st.username WHERE st.username="Username"; 

 SELECT st.*, SUM(pvp.killer = st.username) AS kills, SUM(pvp.username = st.username) as deaths FROM stats AS st LEFT JOIN pvp ON pvp.username = st.username OR pvp.killer = st.username WHERE st.username = "Username" 

DEMO

Чтобы сделать это для всех, используйте GROUP BY :

 SELECT st.*, SUM(pvp.killer = st.username) AS kills, SUM(pvp.username = st.username) as deaths FROM stats AS st LEFT JOIN pvp ON pvp.username = st.username OR pvp.killer = st.username GROUP BY st.username 

DEMO

COUNT(foo) и COUNT(bar) подсчитывают количество строк в наборе результатов, вы можете также сказать COUNT(*) в обоих случаях.

Вам нужно COUNT(*) FROM ... GROUP BY killer чтобы получить количество убийц, например. Не уверен, что структура таблицы даст вам полный ответ.