![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите SQL запрос
старичок © (2003-08-01 11:31:00)
Прошу прощения, никогда не работал с запросами, а теперь нужно.
На D5 база dbf Нужно сделать выборку по трем полям ДАТА ТОВАР КОЛ-ВО и сгруппировать по товару за определенный период времени.
Те выбрать все товары за период и посчитать их колво. Раньше работал с SQL в FOXе и такие вещи делал. А вот в D5 прошу помощи.
stud (2003-08-01 13:45:00) [1]
да, пивка не плохо. только можно сразу заявление на увольнение писать. а кондиционера у нас нету......
ЮЮ (2003-08-01 13:43:00) [2]
>по логике запроса выбирается товар с максимально датой(последней)
По логике запроса выбирается то, что стоит в Where, т.е.
between дата1 and дата2,
а МАХ в max(data) - одна из агрегирующих функций, как и MIN, SUM, COUNT, выполняемая над группой записей
т.е.
MsGuns (2003-08-01 13:43:00) [3]
>stud © (01.08.03 13:39)
Выпей ледяного пивка. Сразу посвежеет в котелке ;))
stud (2003-08-01 13:39:00) [4]
жарко)))
Жук (2003-08-01 13:28:00) [5]
> stud © (01.08.03 13:26)
> это особенность dbase?
Это особенность SQL
stud (2003-08-01 13:26:00) [6]
MsGuns
это особенность dbase?
MsGuns (2003-08-01 13:24:00) [7]
>stud © (01.08.03 13:09)
.. или нет
stud (2003-08-01 13:09:00) [8]
select max(data),tovar,sum(kolvo)
from mytable
where data between дата1 and дата2
по логике запроса выбирается товар с максимально датой(последней) т.е. фактически возвращается одна запись. зачем здесь тогда sum(kolvo)? что суммируется?
получается количество по последнему приходу/расходу товара. или нет??
Zacho (2003-08-01 13:07:00) [9]
> HSolo © (01.08.03 13:04)
Поддерживаю, и в дополнение - лучше не ранее 2001 г. издания
HSolo (2003-08-01 13:04:00) [10]
Поищите книгу Мартина Грабера (MARTIN GRUBER) по SQL
старичок (2003-08-01 13:00:00) [11]
Спасибо ЖУК ! Всё поехало. А где бы найти русское пособие по этому SQL . Лучше бы с примерами итд.
Спасибо ВСЕМ откликнувшимся !
stud (2003-08-01 12:58:00) [12]
проверь как Zacho говорит. может у тебя значения такие "tovar", " tovar" Или " tovar "
старичок (2003-08-01 12:53:00) [13]
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
Жук (2003-08-01 12:30:00) [14]
> старичок (01.08.03 12:04)
> Всё бы хорошо но так ТОВАР не группируется а есть несколько
> строк с таким товаром. А нужно на каждый только одну и СУММА
> его и всё
select max(data),tovar,sum(kolvo)
from mytable
where data between дата1 and дата2
group by tovar
Суммируем кол-во товара и указываем последнюю дату.
HSolo (2003-08-01 12:21:00) [15]
"выбросить запрос в dbf файл" - в смысле, данные выгрузить?
Вариант 1:
insert into DBF_ФАЙЛ(ТОВАР, СУММА) select <Ваш запрос>
Вариант 2: TBatchMove
Zacho (2003-08-01 12:09:00) [16]
> старичок (01.08.03 12:04)
> Всё бы хорошо но так ТОВАР не группируется а есть несколько
> строк с таким товаром.
Не может такого быть. Значит, значения поля ТОВАР в этих строках все-таки разные.
старичок (2003-08-01 12:04:00) [17]
Всё бы хорошо но так ТОВАР не группируется а есть несколько строк с таким товаром. А нужно на каждый только одну и СУММА его и всё. И ещё вопрос в догонку Как выбросить запрос в dbf файл ?
Zacho (2003-08-01 11:53:00) [18]
> старичок (01.08.03 11:50)
Ну сам подумай, что должен вернуть запрос
SELECT ДАТА, ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР
в поле ДАТА ? Значение этого поля из случайной записи ?
> А мне нужно только ТОВАР, КОЛ_ВО ,но товары за нужный период
> времени ! Чтобы одинаковый товар СУММИРОВАЛСЯ за нужный
> период
Ну и сделай
SELECT ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР
старичок (2003-08-01 11:50:00) [19]
Тут понятно. НО ! Дело вот в чем.
База локальная. А группировка требует ОПИСАТЬ ВСЕ поля указанные в SELECT
те
SELECT ДАТА, ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР
требует GROUP BY ДАТА, ТОВАР, КОЛ_ВО !!! ???
А мне нужно только ТОВАР, КОЛ_ВО ,но товары за нужный период времени ! Чтобы одинаковый товар СУММИРОВАЛСЯ за нужный период
HSolo (2003-08-01 11:38:00) [20]
Что значит "посчитать кол-во"? Сложить?
select ТОВАР, sum(КОЛ_ВО)
from ТАБЛИЦА
where ДАТА >= НАЧАЛО_ПЕРИОДА and ДАТА <= КОНЕЦ_ПЕРИОДА
group by ТОВАР