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




MySQL.RU - Webboard



Вернуться
Помогите разобраться с JOIN (LaserJump) 13/11/2001 - 15:37:26
      Re: Помогите разобраться с JOIN (Василий) 13/11/2001 - 16:43:48
      Re: Помогите разобраться с JOIN (dannis) 13/11/2001 - 17:07:48
      Re: Вот (+) (Василий) 13/11/2001 - 21:07:00
      Re: Спасибо за помощь (LaserJump) 15/11/2001 - 14:37:46

> Original message text:
> From: LaserJump - 13/11/2001 - 15:37:26
> Subject:Помогите разобраться с JOIN
> -----------------
> Есть таблица-справочник по клиентам
> Clients (int IdClient, str Name...)
> Есть таблица с платежами клиентов
> Payments (int IdClient, date , rubpay...)
>
> Нужно отобрать суммарные платежи клиентов за конкретный месяц, причем если платежей от клиента не поступало нужно чтобы в результат отбора попали нулевые платежи, т.е. в результате нужно получить столько же записей, сколько есть клиентов.
>
> Пытаюсь делать так:
> SELECT b.IdClient, SUM(b.rubpay)
> FROM Clients a LEFT JOIN Payments b ON (a.IdClient=b.IdClient)
> WHERE ((MONTH(date) = 11)
> AND (YEAR(date) = 2001))
> GROUP BY b.IdClient;
>
> Получаю только суммарные платежи для клиентов, у которых платежи были =(
> Подскажите в чем собака порылась?
>


From: Василий - 13/11/2001 - 21:07:00
Subject:Вот (+)
-----------------
как говорится, всего в одной букве ошибка, а какая разница :)
я когда пробовал, не по payments группировал, а по clients, думал, что у LaserJump тоже так. а он группирует по payments. тогда верно, не получается
а если по clients, то нормально :

mysql> create table clients(idclient int);
mysql> create table payments(idclient int, rubpay int, date datetime);
mysql> insert into clients(idclient) values (1);
mysql> insert into clients(idclient) values (2);
mysql> insert into clients(idclient) values (3);
mysql> insert into payments(idclient, rubpay, date) values
-> (1,1,'2001-11-1');
mysql> insert into payments(idclient, rubpay, date) values
-> (1,20,'2001-11-1');
mysql> select c.idclient, sum(p.rubpay) from clients c left join
payments p on (c.idclient=p.idclient) where ((MONTH(date) = 11) AND (YEAR(date) = 2001)
-> ) or p.idclient is null group by c.idclient;
+----------+---------------+
| idclient | sum(p.rubpay) |
+----------+---------------+
| 1 | 21 |
| 2 | 0 |
| 3 | 0 |
+----------+---------------+

и даже так
mysql> insert into payments(idclient, rubpay, date) values
-> (2,1,'2001-11-1');
mysql> insert into payments(idclient, rubpay, date) values
-> (2,1,'2001-11-1');
mysql> select c.idclient, sum(p.rubpay) from clients c left join
payments p on (c.idclient=p.idclient) where ((MONTH(date) = 11) AND (YEAR(date) = 2001)
-> ) or p.idclient is null group by c.idclient;
+----------+---------------+
| idclient | sum(p.rubpay) |
+----------+---------------+
| 1 | 21 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
+----------+---------------+






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

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

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



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