Помогите создать красивые запросы к MySQL

plusweb

Новичок
имеется таблица футбольных игр
... player_id1 player_id2 total1 total2 ...

все поля int
логика: игроки не могут быть равны (и играть как домашний матч быть в первом поле, так и гостевой быть во втором поле. ну и результаты соотв. тотал 1 и 2), тоталы >=0

не хватает опыта создать красивый запрос, лопачу массивы, но чувствую, что есть простое решение

топ количества игр
топ мячей
 
Последнее редактирование:

prolis

Новичок
не красивый, но без массивов:
Код:
select player_id, sum(cnt) as games,sum(psum) as goals from
(
 select  player_id1 as  player_id, count(*) as cnt, sum(total1) as psum from table group by player_id1
 union
 select  player_id2 as  player_id, count(*) as cnt, sum(total2) as psum from table group by player_id2
)
group by player_id
order by 2 desc, 3 desc
 

plusweb

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

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
имеется таблица футбольных игр
... player_id1 player_id2 total1 total2 ...

все поля int
логика: игроки не могут быть равны (и играть как домашний матч быть в первом поле, так и гостевой быть во втором поле. ну и результаты соотв. тотал 1 и 2), тоталы >=0
Какая-то бредовая таблица. Вся команда может играть домашний матч, а отдельный игрок --- гостевой? Гол в свои ворота игроку в total засчитываем?
 

plusweb

Новичок
игрок это и есть команда.
да, конечно, там есть свои нюансы и я утрировано сформулировал, чтобы показать просто суть что игрок может быть и в том поле и в том.
моя таблица - это условия задачи.

а 1. ID 2. ID_game 3. ID_player 4. CNT_golas 5. IS_guest , конечно красиво.
и главное снимает все проблемы!
но отрубает 90% функционала с кем играл? сколько пропустил?
 
Последнее редактирование:

plusweb

Новичок
Согласен.
Таблица досталась уже с сотней тысяч записей и десятком скриптов под нее. Архитектуру менять нерентабельно, да и приводит к двум инсертам на этапе вставки значений и дублированию (или созданию доп. таблицы) общих данных, типа судья, тех. поражение, время проведения, стадион и т.д.
Уверен, и эта таблица не плоха - и запрос на поверхности. Не хватает опыта у меня. А это очень сложно решить простым изучением синтаксиса мускуль. Попросил помощи для задачи - получил стандартное прогерское решение: "все снести и поставить так как я умею, ибо по-любому дураки придумали и даже вникать бессмысленно" :)
Надо учится все делать самому.
В любом случае спасибо большое, prolis
 
Последнее редактирование:

plusweb

Новичок
кстати, тем кто такой запрос будет использовать. Там синтаксис немножечко нужно подправить
select ... from ( select ... union select ... ) as tmp group by... order by .... limit...
 

Вурдалак

Продвинутый новичок
Вряд ли кто-то такой запрос будет использовать. Сложно представить какой должен быть поисковый запрос, чтобы выйти на этот тред и понять, что это то, что нужно. Вероятно, разве что если искать «красивые запросы к MySQL».
 

plusweb

Новичок
я, кстати его использую и очень благодарен http://fifa4stars.ru/tops.php
но все-равно, подумаю о более красивом, прям интересно стало. Тем более подход уников к 2К - заставил засесть за учебники по мускуль.
 
Последнее редактирование:
Сверху