Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.28;
Скачать: CL | DM;

Вниз

Помогите SQL запрос   Найти похожие ветки 

 
старичок   (2003-08-01 11:31) [0]

Прошу прощения, никогда не работал с запросами, а теперь нужно.
На D5 база dbf Нужно сделать выборку по трем полям ДАТА ТОВАР КОЛ-ВО и сгруппировать по товару за определенный период времени.
Те выбрать все товары за период и посчитать их колво. Раньше работал с SQL в FOXе и такие вещи делал. А вот в D5 прошу помощи.


 
xShadow ©   (2003-08-01 11:36) [1]

А SQL запросы составлять умеешь ?
Кого рода помощь ?


 
HSolo ©   (2003-08-01 11:38) [2]

Что значит "посчитать кол-во"? Сложить?
select ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР


 
старичок   (2003-08-01 11:50) [3]

Тут понятно. НО ! Дело вот в чем.
База локальная. А группировка требует ОПИСАТЬ ВСЕ поля указанные в SELECT
те
SELECT ДАТА, ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР

требует GROUP BY ДАТА, ТОВАР, КОЛ_ВО !!! ???
А мне нужно только ТОВАР, КОЛ_ВО ,но товары за нужный период времени ! Чтобы одинаковый товар СУММИРОВАЛСЯ за нужный период


 
Zacho ©   (2003-08-01 11:53) [4]


> старичок (01.08.03 11:50)

Ну сам подумай, что должен вернуть запрос
SELECT ДАТА, ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР

в поле ДАТА ? Значение этого поля из случайной записи ?

> А мне нужно только ТОВАР, КОЛ_ВО ,но товары за нужный период
> времени ! Чтобы одинаковый товар СУММИРОВАЛСЯ за нужный
> период

Ну и сделай
SELECT ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР



 
старичок   (2003-08-01 12:04) [5]

Всё бы хорошо но так ТОВАР не группируется а есть несколько строк с таким товаром. А нужно на каждый только одну и СУММА его и всё. И ещё вопрос в догонку Как выбросить запрос в dbf файл ?


 
Zacho ©   (2003-08-01 12:09) [6]


> старичок (01.08.03 12:04)
> Всё бы хорошо но так ТОВАР не группируется а есть несколько
> строк с таким товаром.

Не может такого быть. Значит, значения поля ТОВАР в этих строках все-таки разные.


 
HSolo ©   (2003-08-01 12:21) [7]

"выбросить запрос в dbf файл" - в смысле, данные выгрузить?

Вариант 1:
insert into DBF_ФАЙЛ(ТОВАР, СУММА) select <Ваш запрос>

Вариант 2: TBatchMove


 
Жук ©   (2003-08-01 12:30) [8]


> старичок (01.08.03 12:04)
> Всё бы хорошо но так ТОВАР не группируется а есть несколько
> строк с таким товаром. А нужно на каждый только одну и СУММА
> его и всё

select max(data),tovar,sum(kolvo)
from mytable
where data between дата1 and дата2
group by tovar

Суммируем кол-во товара и указываем последнюю дату.


 
старичок   (2003-08-01 12:53) [9]

select max(data),tovar,sum(kolvo)
from mytable
where data between дата1 and дата2
group by tovar
Всё так НО в группировке ТРЕБУЕТ все простые поля таблицы а поэтому в итоговом запросе есть несколько строк одного товара
ИМЕЮ
ДАТА ТОВАР КОЛВО хочу ТОВАР КОЛВО за период с 1 по 2
1 А 10 А 30
2 А 20 В 5
1 В 5
3 С 7


 
stud ©   (2003-08-01 12:58) [10]

проверь как Zacho говорит. может у тебя значения такие "tovar", " tovar" Или " tovar "


 
старичок   (2003-08-01 13:00) [11]

Спасибо ЖУК ! Всё поехало. А где бы найти русское пособие по этому SQL . Лучше бы с примерами итд.
Спасибо ВСЕМ откликнувшимся !


 
HSolo ©   (2003-08-01 13:04) [12]

Поищите книгу Мартина Грабера (MARTIN GRUBER) по SQL


 
Zacho ©   (2003-08-01 13:07) [13]


> HSolo © (01.08.03 13:04)

Поддерживаю, и в дополнение - лучше не ранее 2001 г. издания


 
stud ©   (2003-08-01 13:09) [14]

select max(data),tovar,sum(kolvo)
from mytable
where data between дата1 and дата2
по логике запроса выбирается товар с максимально датой(последней) т.е. фактически возвращается одна запись. зачем здесь тогда sum(kolvo)? что суммируется?
получается количество по последнему приходу/расходу товара. или нет??


 
MsGuns ©   (2003-08-01 13:24) [15]

>stud © (01.08.03 13:09)

.. или нет


 
stud ©   (2003-08-01 13:26) [16]

MsGuns
это особенность dbase?


 
Жук ©   (2003-08-01 13:28) [17]


> stud © (01.08.03 13:26)
> это особенность dbase?

Это особенность SQL


 
stud ©   (2003-08-01 13:39) [18]

жарко)))


 
MsGuns ©   (2003-08-01 13:43) [19]

>stud © (01.08.03 13:39)

Выпей ледяного пивка. Сразу посвежеет в котелке ;))


 
ЮЮ ©   (2003-08-01 13:43) [20]

>по логике запроса выбирается товар с максимально датой(последней)

По логике запроса выбирается то, что стоит в Where, т.е.
between дата1 and дата2,
а МАХ в max(data) - одна из агрегирующих функций, как и MIN, SUM, COUNT, выполняемая над группой записей
т.е.


 
stud ©   (2003-08-01 13:45) [21]

да, пивка не плохо. только можно сразу заявление на увольнение писать. а кондиционера у нас нету......



Страницы: 1 вся ветка

Текущий архив: 2003.08.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
14-92257
dataMaster
2003-08-09 09:53
2003.08.28
Delphi 3 Professional


11-92089
Y
2002-12-22 18:07
2003.08.28
Создание таблицы рекордов


14-92231
ed_209
2003-08-09 14:12
2003.08.28
глюк со строками...


1-92113
kapitan
2003-08-15 15:25
2003.08.28
ShortCut


3-92076
mikhasenko.anton
2003-08-01 07:23
2003.08.28
ADO. Подскажите пжлста как можно запаковать DBF через ADO?