|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Привет.
Подскажите, как вложенный запрос сделать с фильтром из данных внешнего запроса?
Т.е. идея какая. Есть таблица (teams) вот такого вида:
команда1 группаА 3
команда2 группаА 4
команда3 группаБ 6
команда4 группаБ 7
команда5 группаБ 6
Хочу одним запросом вытащить удельный вес очков команды в группе. Т.е. т.к. команды играют в разных группах, общее ранжирование можно сделать, поделив очки команды на количество команд в группе. Чисто вручную получается результат такой:
КОМАНДА ГРУППА ОЧКИ СР.ОЧКИ
команда1 группаА   3       1,5
команда2 группаА   4        2
команда3 группаБ   6        2
команда4 группаБ   7      2,33
команда5 группаБ   6        2
Как я делаю:
SELECT teams.*, (SELECT COUNT(*) FROM teams WHERE gruppa=teams.gruppa) AS grupteams FROM teams
Это первый шаг, хочу получить таблицу вида:
КОМАНДА ГРУППА ОЧКИ КОМАНД_В_ГРУППЕ
команда1 группаА   3       2
команда2 группаА   4        2
команда3 группаБ   6        3
команда4 группаБ   7      3
команда5 группаБ   6        3
В результате запроса получаю:
КОМАНДА ГРУППА ОЧКИ КОМАНД_В_ГРУППЕ
команда1 группаА   3       5
команда2 группаА   4        5
команда3 группаБ   6        5
команда4 группаБ   7      5
команда5 группаБ   6        5
Т.е. WHERE gruppa=teams.gruppa не отрабатывается. Каким образом можно сослаться на значение поля teams.gruppa в текущей строчке? 
Неактивен

Попробуйте
SELECT 
  t.*, 
  t.КОЛИЧЕТВО_ОЧКОВ/(SELECT COUNT(*) FROM teams WHERE gruppa=t.gruppa)
FROM 
  teams t;
Неактивен
Table 'parser.t' doesn't exist
from teams t - что делает?
----
Упс.
Все работает. Блин, так и думал, что это элементарно.  Спасибо вам огромное.
 Спасибо вам огромное.
Отредактированно Bust_Ed (13.11.2013 12:36:34)
Неактивен
А может еще подскажете?  В БД в таблице хранится gruppa_a и группа_b, можно ли в результате запроса заменить gruppa_a на A, а gruppa_b на B, чтобы вид такой был:
 В БД в таблице хранится gruppa_a и группа_b, можно ли в результате запроса заменить gruppa_a на A, а gruppa_b на B, чтобы вид такой был:
КОМАНДА ГРУППА ОЧКИ Ср.очки
команда1      А       3       5
команда2      А       4        5
команда3      Б       6        5
команда4      Б       7       5
команда5      Б       6        5
Все тоже самое могу через switch уже в php сделать, но т.к. там кроме групп еще и лиги есть, хотелось бы сортировку доделать в запросе mysql, для этого нужно, например, chetvertaya_liga переделать в "4".
Неактивен

gruppa_a заменить на A можно через функции substring и ucase
mysql> SELECT ucase(SUBSTRING('gruppa_a',8));
+--------------------------------+
| ucase(SUBSTRING('gruppa_a',8)) |
+--------------------------------+
| A                              |
+--------------------------------+
1 row in set (0.00 sec)Как преобразовывать chetvertaya_liga в 4, если честно, не очень представляю  .
.
Разве что напрямую, через if. но это не очень вариант.
Неактивен

select if(`ГРУППА`='gruppa_a','A',if(`ГРУППА`='gruppa_b','B',`ГРУППА`)) as `ГРУППА` ...
Неактивен
Понял. Тогда буду цеплять еще одну таблицу, и через id связывать. 
Неактивен
vasya написал:
select if(`ГРУППА`='gruppa_a','A',if(`ГРУППА`='gruppa_b','B',`ГРУППА`)) as `ГРУППА` ...
Запрос длинноватый получится, ну и по фиг. Зато все в одном месте.  Спасибо.
 Спасибо.
Неактивен