una1ded
Новичок
Турнирную таблица из таблицы игр [РЕШЕНО]
Доброго дня, коллеги. Прошу помощи, ибо сам уже зашел в тупик.
Есть таблица teams поля, упрощенно:
id (int)
name (varchar)
Есть таблица games с полями
id (int) — id игры
done (пусть тоже int, не критично) — признак того, что игру "сыграли": 0 или 1 (логичнее тут использовать BOOLEAN, но сейчас нет никакой разницы)
k1 (int) — id команды1
k2 (int) — id команды2
g1 (int) — сколько забила команда1
g2 (int) — сколько забила команда2
Задача: построить турнирную таблицу, речь идет о футболе, используя разумное число запросов.
В турнирной таблице отражаются следующие показатели:
И — число сыграных командой игр
В — сколько игр выиграно
П — сколько игр проиграно
Н — сколько игр сыграно в ничью
МЗ, МП — соотв. число забитых/пропущенных мячей
О — очки (за победу - 3 очка, за ничью -1 очко, за поражение — ноль)
Решаю связкой MySQL5 + PHP5.
Показатель «И» считаю 2мя запросами, суммируя потом результат:
SELECT k1, COUNT( * ) FROM `test` WHERE done=1 GROUP BY k1;
SELECT k2, COUNT( * ) FROM `test` WHERE done=1 GROUP BY k2;
Приходится делать так, ибо одна и та же команда может быть как k1, так и k2
Прошу помощи вот в каких вопросах
0) Рационален ли такой способ подсчета «И» или подсчитать более рационально? Может одним запросом?
1) Каким образом можно подсчитать показатели В,П,Н,О?
2) нормально ли организована БД? Т.е. рационально ли вообще из такой таблице высчитывать такие показатели? Есть мысль разбить таблицу games на две таблицы: (id, done) и (id,game,k,g), т.о. выборку по командам будет делать легче, но с кол-вом выигрышей-проигрышей все равно не ясно.
Заранее спасибо!
Доброго дня, коллеги. Прошу помощи, ибо сам уже зашел в тупик.
Есть таблица teams поля, упрощенно:
id (int)
name (varchar)
Есть таблица games с полями
id (int) — id игры
done (пусть тоже int, не критично) — признак того, что игру "сыграли": 0 или 1 (логичнее тут использовать BOOLEAN, но сейчас нет никакой разницы)
k1 (int) — id команды1
k2 (int) — id команды2
g1 (int) — сколько забила команда1
g2 (int) — сколько забила команда2
Задача: построить турнирную таблицу, речь идет о футболе, используя разумное число запросов.
В турнирной таблице отражаются следующие показатели:
И — число сыграных командой игр
В — сколько игр выиграно
П — сколько игр проиграно
Н — сколько игр сыграно в ничью
МЗ, МП — соотв. число забитых/пропущенных мячей
О — очки (за победу - 3 очка, за ничью -1 очко, за поражение — ноль)
Решаю связкой MySQL5 + PHP5.
Показатель «И» считаю 2мя запросами, суммируя потом результат:
SELECT k1, COUNT( * ) FROM `test` WHERE done=1 GROUP BY k1;
SELECT k2, COUNT( * ) FROM `test` WHERE done=1 GROUP BY k2;
Приходится делать так, ибо одна и та же команда может быть как k1, так и k2
Прошу помощи вот в каких вопросах
0) Рационален ли такой способ подсчета «И» или подсчитать более рационально? Может одним запросом?
1) Каким образом можно подсчитать показатели В,П,Н,О?
2) нормально ли организована БД? Т.е. рационально ли вообще из такой таблице высчитывать такие показатели? Есть мысль разбить таблицу games на две таблицы: (id, done) и (id,game,k,g), т.о. выборку по командам будет делать легче, но с кол-вом выигрышей-проигрышей все равно не ясно.
Заранее спасибо!