Форум: "Базы";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];
ВнизПомогите 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c