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

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

Помогите SQL запрос


Страницы:   1 2

старичок ©   (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 ТОВАР


Страницы:   1 2

Наверх

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