Nano Hash - криптовалюты, майнинг, программирование

MySQL Select SUM JOIN WHERE вместе не работает

У меня проблема. (начинающий SQL). У меня есть две таблицы.

Игроки(номер, player_id, team_id, имя, очки, сезон)

Команды (team_id, team_name, Season) — есть один уникальный team_id, но team_name может быть разным в зависимости от сезона.

Я хочу суммировать все очки single player_id в определенном сезоне, и я могу это сделать :)

    SELECT SUM(players.points), 
           players.player_id, 
           players.team_id, 
           players.season,
           players.nr, 
           players.name 
      FROM players 
     WHERE season='2015/2016' 
  GROUP BY player_id 
  ORDER BY SUM(players.points) DESC 
     LIMIT 30

и эта работа идеально подходит для меня :) Но я не могу понять, как присоединиться к таблице команд, чтобы получить teams.team_name, соответствующее конкретному сезону, совпадающему с закрытием WHERE. В данном случае сезон='2015/2016'. Если я хочу суммировать очки игроков из 2015/2016, и мне нужно получить team_name также из сезона 2015/2016. Я попробовал LEFT JOIN, но безуспешно:/ вот мой код.

    SELECT players.player_id, 
           players.nr, 
           players.name, 
           players.team_id, 
           SUM(players.points), 
           players.season 
      FROM players 
     WHERE players.sezon='2015/2016' 
 LEFT JOIN teams 
        ON (teams.team_id=players.team_id AND teams.season=players.season ) 
  GROUP BY player_id 
  ORDER BY SUM(points) DESC 
     LIMIT 30

Спасибо за ваши усилия.

01.04.2016

  • Я предполагаю, что players.season против players.sezon здесь просто ошибка копирования/вставки? 01.04.2016
  • да. Используя английские слова в моем примере. team.season= игроки.season 01.04.2016
  • Если хотите, рассмотрите следующий простой двухэтапный план действий: 1. Если вы еще этого не сделали, предоставьте правильные DDL (и/или sqlfiddle), чтобы нам было легче воспроизвести проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, предоставленной на шаге 1. 01.04.2016

Ответы:


1

Если вы не хотите отображать записи игроков без соответствующей записи команды, используйте INNER JOIN вместо LEFT JOIN.

SELECT players.player_id, 
       players.nr, 
       players.name, 
       players.team_id, 
       SUM(players.points), 
       players.season,
       teams.team_name
FROM players 
LEFT JOIN teams 
    ON (teams.team_id = players.team_id AND teams.season = players.season ) 
WHERE players.season = '2015/2016' 
GROUP BY player_id 
ORDER BY SUM(points) DESC 
LIMIT 30
01.04.2016
  • Я хочу отображать записи игроков, но строки игроков не содержат значений team_name. Мне нужна вся статистика игроков из таблицы player и team_names из таблицы команд, где team_id и сезон одинаковы в обеих таблицах. 01.04.2016
  • Вот почему вы предполагаете получить team_name из таблицы команд, к которой вы присоединяетесь (teams.team_name), но, как я уже сказал, если вы не хотите, чтобы отображались записи с team_name = null, используйте INNER JOIN, чтобы убедиться, что игрок назначен в существующую команду 01.04.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..