#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. Спасибо .. это действительно полезно