Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сложный запрос 
:(
    Опции темы
del3d
Дата 14.6.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Электронный журнал (с оценками).

Упрощенная версия:
Код

-- Таблица со студентами
CREATE TABLE `student`(
  `id` int auto_increment,
  `name` varchar(255),
  PRIMARY KEY(`id`)
);
-- Таблица с оценками
CREATE TABLE `mark`(
  `id` int auto_increment,
  `mark` int,
  `date_mark` date,
  `id_student` int,
  PRIMARY KEY(`id`)
);

Можно ли написать запрос, возвращающий примерно вот такую таблицу:
user posted image
т.е. чтобы оценки группировались по дате (в отдельном столбце)..  
PM MAIL   Вверх
Veve
Дата 14.6.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



Привет. Ну ты и объяснил:
Цитата

user posted image

Можешь словами описать, что тебе нужно, а ещё лучше небольшим примером. 
PM MAIL ICQ Skype MSN   Вверх
del3d
Дата 14.6.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Нужно, чтобы оценки располагались как вв школьном журнале,
по столбцам, каждый столбец - это конкретная дата..
PM MAIL   Вверх
Veve
Дата 14.6.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



Ну тогда этот вопрос не сюда. Запрос будет обычным, к примеру таким: 
Код

SELECT mark, date_mark, name
FROM mark, student
WHERE mark.id_student=student.id
ORDER BY name, date_mark

Вопрос в том как ты будешь отображение делать.
PM MAIL ICQ Skype MSN   Вверх
del3d
Дата 14.6.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Я так понял, нельзя на SQL такой запрос написать 
(чтобы поля в результате создавались по количеству различных дат.. в таблице с оценками)

Придется средствами языка программирования формировать такую таблицу, правильно?
Вопросов больше нет.. Спасибо..

PM MAIL   Вверх
Veve
Дата 14.6.2009, 21:20 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



По идее можно, но это мне кажется будет не совсем правильно и трудоёмко. Ну, подожди может кто ещё подскажет, что-нибудь дельное.
Ну я бы точно программно формировал бы. 
PM MAIL ICQ Skype MSN   Вверх
Zloxa
Дата 15.6.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Задача, которую вы пытаетесь решить называется транспонирование.
Парадигма SQL - структура результата запроса заранее известна и не зависит от данных.
Ввиду этого такую операцию как транспонирование поддерживает очень малое количество диалектов, потому как количество столбцов(структура результата) при этой операции заведомо не известно.
Однако, если мы заранее знаем даты, на которые мы хотели бы иметь результат, мы таки можем составить запрос.
Код

  select student.name
            ,avg(case when date_mark = '12.04.09'  then mark.mark end) "12.04.09"
            ,avg(case when date_mark = '13.05.09'  then mark.mark end) "13.05.09"
            ,avg(case when date_mark = '20.05.09'  then mark.mark end) "20.05.09"
  from student,mark
  where student.id = mark.id_student
  group by student.id,student.name

Прошу прощения, я не знаю особенностей реализации SQL в MySql. Этот запрос вам самостоятельно придется доработать напильником.



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0714 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.