Подскажите, пожалуйста. Есть две таблицы Первая Код (Text): id team1 team2 score1 score2 1 1 2 3 1 2 1 3 3 1 3 1 2 5 2 4 1 2 2 3 Вторая Код (Text): id team player 1 2 1 2 1 1 3 2 1 4 2 1 1 2 2 1 2 3 В первой записаны команды которые играли и результат игры А во второй id-игры и команда за которую играл игрок Возможно ли записать такой запрос который бы определял количество побед, ничих и поражений у каждого игрока, для тех игр в которых он учавствовал? Структура первой таблицы может иметь следующий вид, но желательно что бы она была в первом представленном варианте... Код (Text): id team1 team2 score1 score2 wins1 ties wins2 1 1 2 3 1 1 0 0 2 1 3 3 1 1 0 0 3 1 2 5 2 1 0 0 4 1 2 2 3 0 0 1 Подскажите, кто сможет, а то у меня в голове решение никак не рождается...
Я придумал, вот [sql] select a.id,team1,team2,score1,score2,b.id,team,player, if (b.team=a.team1,score1,score2) plus, if (b.team=a.team1,score2,score1) minus, if (if (b.team=a.team1,score1,score2)>if (b.team=a.team1,score2,score1),1,0) wins, if (if (b.team=a.team1,score1,score2)=if (b.team=a.team1,score2,score1),1,0) ties, if (if (b.team=a.team1,score1,score2)<if (b.team=a.team1,score2,score1),1,0) losses from table1 a,table2 b where a.id=b.id [/sql] В результате выдает Код (Text): id team1 team2 score1 score2 id team player plus minus wins ties losses 1 1 2 3 1 1 2 1 1 3 0 0 1 1 1 2 3 1 1 2 2 1 3 0 0 1 1 1 2 3 1 1 2 3 1 3 0 0 1 2 1 3 3 1 2 1 1 3 1 1 0 0 3 1 2 5 2 3 2 1 2 5 0 0 1 4 1 2 2 3 4 2 1 3 2 1 0 0 но слишком громоздко, может кто подскажет как это можно оптимизировать...
Вот... новая проблемма... По полученным полям - wins, ties, losses не выполняется операция суммирования (SUM)...
Вот еще одна идея... [sql] SELECT player, SUM(b.score1),SUM(c.score2),SUM(b.score2),SUM(c.score1), SUM(b.wins),SUM(c.losses),SUM(b.ties),SUM(c.ties),SUM(b.losses),SUM(c.wins) FROM table2 a LEFT OUTER JOIN table1 b ON a.team=b.team1 AND a.id=b.id LEFT OUTER JOIN table1 c ON a.team=c.team2 AND a.id=c.id GROUP BY player [/sql] Но в этом случае требуется хранить в первой таблице три дополнительных поля wins, ties, losses. А еще невозможно написать SUM(b.score1)+SUM(c.score2), так как происходит сложение по следующему правилу NULL + 3 = NULL, а нужно что бы получалось - 3. Может кто подскажет как с этим справиться...
IFNULL - это самое то. А возможно как нибуть произвести группировку и посчитать сумму по полученным полям в первом варианте решения? Может у кого будут идеи.
В качестве первого я имел ввиду вот этот вариант [sql] select a.id,team1,team2,score1,score2,b.id,team,player, if (b.team=a.team1,score1,score2) plus, if (b.team=a.team1,score2,score1) minus, if (if (b.team=a.team1,score1,score2)>if (b.team=a.team1,score2,score1),1,0) wins, if (if (b.team=a.team1,score1,score2)=if (b.team=a.team1,score2,score1),1,0) ties, if (if (b.team=a.team1,score1,score2)<if (b.team=a.team1,score2,score1),1,0) losses from table1 a,table2 b where a.id=b.id [/sql] Возможно ли по нему получить сумму?