Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Как сделать переменное количество столбцов (KnalB) 20/05/2011 - 11:56:08
      Re: Как сделать переменное количество столбцов (Akina) 20/05/2011 - 14:37:46
      Re: Как сделать переменное количество столбцов (KnalB) 20/05/2011 - 14:58:03
      Re: Как сделать переменное количество столбцов (Akina) 21/05/2011 - 09:58:55

> Original message text:
> From: KnalB - 20/05/2011 - 11:56:08
> Subject:Как сделать переменное количество столбцов
> -----------------
> Еще раз извините за беспокойство.
> Меня попросили помочь написать рейтинг... но что-то у меня не получается. Чувствую, что это можно как то сделать, а как догадаться не могу :(
> Помогите, пожалуйста...
>
> Есть три таблицы.
>
> Механизм этих трех таблиц прост:
> в первую заносятся участники
> во вторую заносятся наименования турниров
> в третью заносятся результаты
>
> Среди участников есть те кто постоянно играют, а есть те кто приходит раз от раза... но учитывать надо всех :( .
>
> И надо вывести таблицу рейтинга:
>
> Номер по рейтингу (у кого суммарное количество больше тот и первый т.е. простой сортировкой по сумме)
> Фамилия
> Подразделение
> Очков в турнире 1
> Очков в турнире 2
> ...
> Очков в турнире N
> Суммарное количество очков набранное за все турниры.
>
> Может я неправильно создал таблицы?
> Надо как то переделать? Скажите как пожалуйста!
> Задача простая, а не получается :_(
>
> ----------------------------------
> "мои" таблицы
>
> CREATE TABLE `ez`.`zd_1_fi` (
> `mk1` int(11) NOT NULL AUTO_INCREMENT,
> `F` varchar(20) DEFAULT NULL,
> `I` varchar(20) DEFAULT NULL,
> `PODR` varchar(15) DEFAULT NULL,
> `POL` int(10) unsigned NOT NULL,
> PRIMARY KEY (`mk1`)
> ) ENGINE=InnoDB AUTO_INCREMENT=612 DEFAULT CHARSET=cp1251;
>
> CREATE TABLE `ez`.`zd_2_champ` (
> `mk2` int(11) NOT NULL AUTO_INCREMENT,
> `NAME` varchar(100) DEFAULT NULL,
> `mdate` date DEFAULT NULL,
> `mdatetime` datetime NOT NULL,
> `year` int(10) unsigned NOT NULL,
> PRIMARY KEY (`mk2`) USING BTREE
> ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=cp1251;
>
> CREATE TABLE `ez`.`zd_3_stat` (
> `mk3` int(11) NOT NULL AUTO_INCREMENT,
> `mk_mk1` int(11) DEFAULT NULL,
> `mk_mk2` int(11) DEFAULT NULL,
> `points` int(11) DEFAULT NULL,
> PRIMARY KEY (`mk3`)
> ) ENGINE=InnoDB AUTO_INCREMENT=2785 DEFAULT CHARSET=cp1251;
>
> В них такие данные:
>
> В zd_1_fi:
>
> 605, 'Иванов', 'И.', 'БАРК', 1
> 606, 'Лев', 'А.', 'КДДУ', 1
> 607, 'Клепиков', 'В.', 'ТОРГ', 1
> 608, 'Мих', 'Ф.', 'УКТП', 1
> 609, 'Рейн', 'С.', 'КР', 1
> 610, 'Ольгин', 'А.', 'КДДУ', 1
> 611, 'Ягодин', 'К.', 'УКТП', 1
>
> В zd_2_champ:
>
> 41, 'ПРОБНЫЙ 2010', '2010-05-05', '2011-05-19 18:08:50', 2010
> 42, 'ПРОБНЫЙ 2011', '2011-05-19', '2011-05-19 18:09:06', 2011
>
> В zd_3_stat:
>
> 2777, 605, 41, 1000
> 2778, 606, 41, 800
> 2779, 607, 41, 600
> 2780, 608, 41, 500
> 2781, 608, 42, 1000
> 2782, 606, 42, 800
> 2783, 605, 42, 600
> 2784, 607, 42, 500
>
> Т.е. связь первой и второй таблицы происходит через третью - в которую записываются ключи и собственно очки.
>
> На выходе должно получится:
>
> F, I, PODR, Очков в NAME(1), Очков в NAME(2), .... , Очков в NAME(N), Суммарное количество Очков в таблице(2).
>


From: Akina - 20/05/2011 - 14:37:46
Subject:Как сделать переменное количество столбцов
-----------------
Подобные вещи делаюти с использованием перекрёстных запросов (PIVOT QUERY). Однако в MySQL они не реализованы.
Получайте линейную выборку и форматируйте на клиенте.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
38466



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |