SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.05.2015 08:40:23

ban4e
Участник
Зарегистрирован: 23.05.2015
Сообщений: 2

перекрестный запрос

Есть 5 таблиц : indicators (в них хранятся различные показатели - рост, вес), health (там хранится дата прохождения этих показателей), child (ребенок), season (месяц и количество рабочих дней), attendance (посещаемость ребенка за определенный месяц)
приведу поставленную цель на примере :
Допустим идет месяц май и в нем 25 рабочих дней, дети посещают садик - кто-то 12 дней, кто-то 24 дня и т.д. Эту посещаемость надо разбить на группы ">90%", "70-90%", "50-70%" и "<50%". В свою очередь в таблице показателей хранятся данные для каждого ребенка - например, рост и вес и их значения (130 рост, 40 вес и тд), а в таблице health можно узнать дату прохождения этого обследования ( 15 мая скажем)
Так вот, надо сделать так, чтобы для каждой группы по посещаемости (">90%", "70-90%", "50-70%" и "<50%") выдавались средние значения показателей ( роста и веса) и важно, чтобы месяц обследования и месяц в таблице season совпадали

показатели   ">90%"   "70-90%"    "50-70%"    "<50%"
рост               123          117            null            120
вес                 41           39             null             40

Надеюсь понятно объяснил) Только начал работать с mysql и вообще не могу понять как это связать воедино, жду помощи и поддержки)


Прикрепленные файлы:
Attachment Icon база.png, Размер: 45,093 байт, Скачано: 507

Неактивен

 

#2 26.05.2015 09:43:46

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: перекрестный запрос

городить монстра из нескольких левых джойнов по типу

select t.title, `>90%` from
(select title from indicators group by 1) t left join
(select avg(`value`) `>90%`, title from indicators join healt h on idIndicators=Indicators_idIndicators
where `date`='месяц май' and
(select `count` from attendance a where a.Child_idChild = h.Child_idChild)/(select `count` from season where mouth='месяц май') > 0.9
group by 2) t1 using(title)


посмотрите в сторону http://sqlinfo.ru/forum/viewtopic.php?id=4304

Неактивен

 

#3 26.05.2015 16:03:21

ban4e
Участник
Зарегистрирован: 23.05.2015
Сообщений: 2

Re: перекрестный запрос

Спасибо) разобрался как создать этого монстра)
единственное, не понял по какому принципу группируем `group by 2`, что означает эта двойка? она заменяет какое-то поле?

Неактивен

 

#4 26.05.2015 21:49:41

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: перекрестный запрос

номер поля в части select, т.е. в данном случае эквивалентно
group by title

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson