SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 26.07.2011 12:25:36

neon_tmn
Участник
Зарегистрирован: 24.10.2010
Сообщений: 3

Объединение двух таблиц

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


Прикрепленные файлы:
Attachment Icon 1.bmp, Размер: 757,398 байт, Скачано: 765

Неактивен

 

#2 27.07.2011 12:28:10

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Объединение двух таблиц

Может быть можно получше, но так работать будет.

CREATE TABLE `t_4541_sheta` (
  `id` bigint unsigned
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `t_4541_platezhi` (
  `date` date,
  `shet` bigint unsigned,
  `summ` bigint unsigned
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

insert into `t_4541_sheta`    values(123321342314),(345342523521),(413423453245),(242423423423),(846456456460);
insert into `t_4541_platezhi` values('2011-05-14',345342523521,1),('2011-05-15',345342523521,1),('2011-05-15',242423423423,1),('2011-05-16',846456456460,1);


select t_out.id,(select sum(t_in.summ) from `t_4541_platezhi` t_in where t_in.shet=t_out.id and date>='2011-05-14' and date<='2011-05-15') from `t_4541_sheta` t_out;
 


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 27.07.2011 12:38:14

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Объединение двух таблиц

Я бы заменил sum(t_in.summ) на IFNULL(sum(t_in.summ), 0), чтобы получался 0, а не NULL, но это мелочь

Неактивен

 

#4 27.07.2011 12:42:45

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Объединение двух таблиц

Можно переписать через JOIN:

SELECT t_out.id, IFNULL(SUM(t_in.summ),0) FROM `t_4541_sheta` t_out LEFT JOIN `t_4541_platezhi` t_in ON t_in.shet=t_out.id AND date>='2011-05-14' and date<='2011-05-15' GROUP BY t_out.id;

Неактивен

 

Board footer

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