Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-92105
mfender
2003-08-15 13:13
2003.08.28
Не обрабатываются ИС! В чем дело?


3-92023
Anna
2003-08-05 09:42
2003.08.28
Поиск данных


3-91973
Петров Денис
2003-08-06 17:00
2003.08.28
is not a valid timestamp


3-91979
BoxTer
2003-08-01 09:16
2003.08.28
CommandTimeout в ADO


3-91989
Admin
2003-08-05 07:11
2003.08.28
Программа с MySQL.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский