создать турнирную таблицу лиги настольного футбола

#php #mysql

#php #mysql

Вопрос:

У меня есть две таблицы .. первая таблица

    id_klub    || nama_klub
      01      || manchester
      02      || chelsea
      03      || liverpool
      04      || arsenal
  

вторая таблица

  id_skor  || Date        || Home  || Away || skor_home||  skor_away
 0001     ||  12/12/12   ||  01   || 02   ||     3     ||     2 
 0002     ||  13/12/12   ||  02   || 03   ||     2     ||     2
 0003     ||  14/12/12   ||  04   || 03   ||     1     ||     3
 0004     ||  15/12/12   ||  04   || 01   ||     3     ||     1
  

это во второй таблице дома и на выезде означает id_club, пример :

когда дома = 01, а на выезде = 02, это означает «Манчестер» против «Чилси», и мой вопрос в том, как я могу составить таблицу турнирной таблицы из этих 2 таблиц?

 club_name   ||game ||win    ||lose  ||draw  ||point
chelsea     || 2   ||0      || 1    || 1    || 1

with logic
win = point  3;
lose = point  0;
draw = point  1;
  

я пытался с этим запросом

 SELECT nama_klub,

count(case when skor_home > skor_away then 1 end) wins, 
count(case when skor_home < skor_away then 1 end) lose, 
count(case when skor_home = skor_away then 1 end) draw,

sum(
          case when skor_home > skor_away then 3 else 0 end 
          case when skor_home = skor_away then 1 else 0 end
    ) score

FROM klub INNER JOIN game ON klub.id_klub = game.home

GROUP BY id_skor
  

Комментарии:

1. Если вам нужен кто-то для выполнения вашей кодирующей работы, вы должны подать это в Jobs . Если вам нужна помощь в настройке вашей системы, покажите код, который вы пробовали, чтобы мы могли помочь вам улучшить его.

2. Что вы уже пробовали? мы не можем выполнить ваше задание, но мы можем помочь, когда вы хотя бы что-то попробовали.

3. Что случилось с предоставленным вами кодом? Ошибка? Не тот результат, который вы ожидаете?

4. да, не тот результат, который я ожидаю

Ответ №1:

Вам нужно присоединиться к game таблице дважды на klub столе, один раз на home и один раз на away полях, чтобы получить все игры, в которых участвовала команда.

Затем вам нужно сложить условные значения из двух таблиц, чтобы получить ожидаемый результат, используя приведенный ниже код.

 select nama_klub,
       count(g1.home)   count(g2.away) as 'game',
       count(if(g1.skor_home>g1.skor_away,1,null))   count(if(g2.skor_home<g2.skor_away,1,null)) as win,
       count(if(g1.skor_home=g1.skor_away,1,null))   count(if(g2.skor_home=g2.skor_away,1,null)) as draw,
       count(if(g1.skor_home<g1.skor_away,1,null))   count(if(g2.skor_home>g2.skor_away,1,null)) as loss,
       (count(if(g1.skor_home>g1.skor_away,1,null))   count(if(g2.skor_home<g2.skor_away,1,null))) * 3   (count(if(g1.skor_home=g1.skor_away,1,null))   count(if(g2.skor_home=g2.skor_away,1,null))) as score
from klub k
left join game g1 on k.id_klub=g1.home
left join game g2 on k.id_klub=g2.away
group by k.id_klub, k.nama_klub
  

Комментарии:

1. Спасибо .. это действительно полезно