Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять туплю: left join ??? [D6, dBase, FoxPro]


alex_1234 ©   (2005-11-08 17:56:00) 

Никак не могу сообразить: дано 2 таблицы: таблица продаж data - дата продажи

create table table1(
id char(30),
data date,
kolvo integer)

и справочник товаров, где begin_kolvo - первоначальное колво товара

create table table2
id char(30),
name char(30),
begin_kolvo integer)

данные следующие:

insert into table2(id,name,begin_kolvo) values ("1","ABC1",10);
insert into table2(id,name,begin_kolvo) values ("2","XYZ2",100);
insert into table2(id,name,begin_kolvo) values ("3","KLMN3",15);

и

insert into table2(id,data,kolvo) values(1,'10.10.2005',1);
insert into table2(id,data,kolvo) values(2,'10.10.2005',1);
insert into table2(id,data,kolvo) values(3,'10.10.2005',1);
insert into table2(id,data,kolvo) values(1,'10.10.2005',3);
insert into table2(id,data,kolvo) values(2,'10.10.2005',1);
insert into table2(id,data,kolvo) values(1,'11.10.2005',1);
insert into table2(id,data,kolvo) values(2,'11.10.2005',2);
insert into table2(id,data,kolvo) values(1,'11.10.2005',1);

Хочется получить примерно следующее:
id     |  name  |   begin_kolvo  | sum(kolvo)  
1      | XYZ2   |       100        |    2

если выборка была за 10.10.2005 по названию "XYZ2"
Копать надо где-то в направлении LEFT JOIN,  вот мои мучения, которые не дали нужного результат:

select table2.id, table2.name,table2.begin_kolvo,table1.kolvo,table1.kolvo from table2
left join table1 on table1.data='11.10.2005'
where table2.name like "%XY%"

при попытке сделать SUM(table1.kolvo) требуется сделать group by,  но вот с ним-то (group)  не как и не разберусь...


alex_1234   (2005-11-09 11:10:00) [1]

УРА!!! Заработало.
добавил связку таблиц в часть "ON"

select table2.id, table2.name,table2.begin_kolvo,sum(table1.kolvo) from table2
left join table1 on table1.data='11.10.2005' and table1.id=table2.id
where table2.name like "%XY%"
group by table2.id, table2.name,table2.begin_kolvo


Desdechado   (2005-11-08 22:03:00) [2]

вообще-то не вижу объединения таблиц...
где в LEFT JOIN объединение table1 с table2?


alex_1234   (2005-11-08 18:05:00) [3]

Ругается следующим макаром:

When GROUP BY exists, every simple field in projectors must be in GROUP BY.


ANB   (2005-11-08 18:01:00) [4]

select table2.id, table2.name,table2.begin_kolvo,sum(table1.kolvo) from table2
left join table1 on table1.data='11.10.2005'
where table2.name like "%XY%"
group by table2.id, table2.name,table2.begin_kolvo


Наверх

Титульная страница Поиск, карта сайта Написать письмо