![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять туплю: 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