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




MySQL.RU - Webboard



Вернуться
Помогите с непростым запросом (KnalB) 15/04/2011 - 17:46:10
      Re: Помогите с непростым запросом (Akina) 15/04/2011 - 21:57:10
      Re: Помогите с непростым запросом (KnalB) 18/04/2011 - 14:42:40

> Original message text:
> From: KnalB - 15/04/2011 - 17:46:10
> Subject:Помогите с непростым запросом
> -----------------
> Здравствуйте!
>
> Что-то я совсем заработался, помогите составить сложный запрос.
>
> Есть ТРИ таблицы, в одной есть 100 человек, в другой 30, в третьей 110 (причем люди в них иногда пересекаются, иногда новые добавляются). У каждого человека есть СУММА ОЧКОВ.
> Надо написать запрос чтобы получилась такая выборка:
>
> Человек СУММА из первой таблицы, СУММА из второй таблицы, СУММА из третьей таблицы, ОБЩАЯ СУММА отсортированное по ОБЩАЯ СУММА.
>
> Написал как то сложно, приведу таблицы сразу понятнее станет :)
>
> Таблицы такие:
> CREATE TABLE `z`.`zd_1_stat` (
> `mk1` int(11) NOT NULL AUTO_INCREMENT,
> `points1` int(11) DEFAULT NULL,
> PRIMARY KEY (`mk1`)
> ) ENGINE=InnoDB AUTO_INCREMENT=1842 DEFAULT CHARSET=cp1251;
>
> CREATE TABLE `z`.`zd_2_res` (
> `mk2` int(11) NOT NULL AUTO_INCREMENT,
> `points2` int(11) DEFAULT NULL,
> PRIMARY KEY (`mk2`)
> ) ENGINE=InnoDB AUTO_INCREMENT=1842 DEFAULT CHARSET=cp1251;
>
> CREATE TABLE `z`.`zd_3_yes` (
> `mk3` int(11) NOT NULL AUTO_INCREMENT,
> `points3` int(11) DEFAULT NULL,
> PRIMARY KEY (`mk3`)
> ) ENGINE=InnoDB AUTO_INCREMENT=1842 DEFAULT CHARSET=cp1251;
>
> //сюда заносятся все люди, а в таблицы выше - "ключи" из этой.
> CREATE TABLE `z`.`people` (
> `mk` int(11) NOT NULL AUTO_INCREMENT,
> `FIO` varchar(20) DEFAULT NULL,
> PRIMARY KEY (`mk`)
> ) ENGINE=InnoDB AUTO_INCREMENT=1842 DEFAULT CHARSET=cp1251;
>
> на выходе надо получить:
>
> select FIO, points1, points2, points3, pointsSUMM
>
> причём строчка для FIO должна быть даже если человек один раз только "отметился", т.е. скажем в points1 и points2 - null.
>


From: Akina - 15/04/2011 - 21:57:10
Subject:Помогите с непростым запросом
-----------------
select
p.fio
, sum(coalesce(p1.points,0)) points1
, sum(coalesce(p2.points,0)) points2
, sum(coalesce(p3.points,0)) points3
, sum(coalesce(p1.points,0))+sum(coalesce(p2.points,0))+sum(coalesce(p3.points,0)) pointsSum
from people p
left join points1 p1 on p.id=p1.p_id
left join points1 p2 on p.id=p2.p_id
left join points1 p3 on p.id=p3.p_id
group by fio
order by 5 desc

А в чём сложность-то?


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

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

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



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