powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Прошу помощи Select
14 сообщений из 14, страница 1 из 1
Прошу помощи Select
    #32738252
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите создать запрос с помощью команды Select

Есть две таблицы: tab_tovar (buyerk-код покупателя, tovar-покупаемый им товар-товары постоянно повторяются) и tab_price (dates-дата изменения цены,buyerk-код покупателя,tovar-покупаемый им товар,price-цена)

По указанным значениям buyerk и dates необходимо создать запрос

Результат запроса - таблица с полями: tovar, price, где tovar - виды товаров указанного покупателя, price - цена этих товаров на данный момент (тоесть предыдущая дата изменения цены)

Ой, вроди понятно ...
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32738371
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давай попробуем.

Необходимо выбрать действующие цены:

Select Max(Dates), ...;
From tab_Price;
Where Dates <= <заданое значение ДАТЫ>;
Into cursor/Table <Имя курсора/Табл>

Таким образом мы получим действующие цены на товары

А дальше уже по коду твоего покупателя

Попробуй сначала раздельными запросами а потом если получиться то загони в один!
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32738426
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select buyerk, tovar, max(dates) dates from tab_price where buyerk=<Код покупателя> group by buyerk, tovar into cursor cLastDateByBuyer

select a.tovar, a.price from tab_price a inner join cLastDateByBuyer b on b.buyerk=a.buyerk and b.tovar=a.tovar and b.dates=a.dates into cursor cLastPriceByBuyer
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32741497
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почти получилось.... пишу... (название колонок другое...)

v_receiverk = ThisForm.receiverk.Value
v_scrap4k = ThisForm.GridMchild.Column1.Combo1.Value
v_dsend = ThisForm.dsend.Value

SELECT pb.dates AS dates, pb.price AS price FROM pricebuy pb;
WHERE pb.buyerk = v_receiverk AND pb.scrap = v_scrap4k AND pb.dates <= v_dsend;
INTO CURSOR cPr

сформировался курсор cPr с колонками dates и price.

Как теперь с этого курсора вывести цену максимальной даты

пишу:
Select p.price AS price From cPr p WHERE p.dates = MAX (p.dates)
Into cursor .....
неполучается

или может можно это сделать сразу в первом селекте
Заранее благодарен
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32741500
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
help123 Ну почти получилось.... пишу... (название колонок другое...)

v_receiverk = ThisForm.receiverk.Value
v_scrap4k = ThisForm.GridMchild.Column1.Combo1.Value
v_dsend = ThisForm.dsend.Value

SELECT pb.dates AS dates, pb.price AS price FROM pricebuy pb;
WHERE pb.buyerk = v_receiverk AND pb.scrap = v_scrap4k AND pb.dates <= v_dsend;
INTO CURSOR cPr

сформировался курсор cPr с колонками dates и price.

Как теперь с этого курсора вывести цену максимальной даты

пишу:
Select p.price AS price From cPr p WHERE p.dates = MAX (p.dates)
Into cursor .....
неполучается

или может можно это сделать сразу в первом селекте
Заранее благодарен

Попробуй так:
Select Max(pb.dates) As dates, pb.price As price;
FROM pricebuy pb;
WHERE pb.buyerk = v_receiverk;
AND pb.scrap = v_scrap4k;
AND pb.dates <= v_dsend;
Group By 2
INTO Cursor cPr
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32741518
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает... но результат:

dates - price
11.10.04 - 960
10.10.04 - 970
12.10.04 - 930
20.10.04 - 1000

а нужно только:

price
1000
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32741539
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тогда убирай
Код: plaintext
Group By
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32741724
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убираю GROUP BY:

v_receiverk = ThisForm.receiverk.Value
v_scrap4k = ThisForm.GridMchild.Column1.Combo1.Value
v_dsend = ThisForm.dsend.Value

SELECT MAX(pb.dates) AS dates, pb.price AS price;
FROM pricebuy pb;
WHERE pb.buyerk = v_receiverk;
AND pb.scrap = v_scrap4k;
AND pb.dates <= v_dsend

пишет ошибку:

Program Error: SQL: GROUP BY clause is missing or invalid
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32741870
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе ответили 2 раза относительно правильно (первые 2 ответа) - только надо
было выбрать тот вариант что тебе нужен (с ограничением Dates <= <заданое
значение ДАТЫ> или без этого ограничения). А что потом пошло - это уже ты не
понимаешь чего тебе пишут, или не удосужился даже попробовать :(
Ещё раз попробуй вариант AleksMed - возможно добавив условие на дату (как
писал AlikWishin в самом начале) в первый запрос - если надо не
"последние/сегодняшние" цены, а "действовавшие на момент X".

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32741879
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Тебе ответили 2 раза относительно правильно (первые 2 ответа) - только надо
было выбрать тот вариант что тебе нужен (с ограничением Dates <= <заданое
значение ДАТЫ> или без этого ограничения). А что потом пошло - это уже ты не
понимаешь чего тебе пишут, или не удосужился даже попробовать :(
Ещё раз попробуй вариант AleksMed - возможно добавив условие на дату (как
писал AlikWishin в самом начале) в первый запрос - если надо не
"последние/сегодняшние" цены, а "действовавшие на момент X".

Posted via ActualForum NNTP Server 1.0

Ну зачем так резко. Я ведь только учусь. Хорошо Вам знающим. А вот мне базу срочно надо написать. Вот пишу и одновременно учусь..
В любом случае Всем большое спасибо за помощь. :))
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32743538
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что после 2-х правильных ответов пошла какая-то непонятная переписка.
Я подумал что ты просто не попробовал их, или не вник :( Извини, если задел
за живое.

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32743879
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
help123 убираю GROUP BY:

v_receiverk = ThisForm.receiverk.Value
v_scrap4k = ThisForm.GridMchild.Column1.Combo1.Value
v_dsend = ThisForm.dsend.Value

SELECT MAX(pb.dates) AS dates, pb.price AS price;
FROM pricebuy pb;
WHERE pb.buyerk = v_receiverk;
AND pb.scrap = v_scrap4k;
AND pb.dates <= v_dsend

пишет ошибку:

Program Error: SQL: GROUP BY clause is missing or invalid

Если у тебя VFP 8? то попробуй поиграй с настройками
Set Enginebehavior 70
В 6-й версии должно отрабатывать!!!!
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32745451
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi AlikWishin!

Отрабатывать то оно будет, но НЕПРАВИЛЬНО.
Для негруппируемого и неагрегируемого поля будет браться в лучшем случае
последнее ФИЗИЧЕСКИ значение из группы, в худшем - ПРОИЗВОЛЬНОЕ.
Заполни таблицы не в хронологическом порядке и проверь что получится :)

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
Прошу помощи Select
    #32745671
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Igor Korolyov

Не обращал внимания. Надо пересмотреть все свои программы.

Заказчики пока молчат, наверное, все таки, подобных ситуаций не возникало!
Спасибо Igor Korolyov
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Прошу помощи Select
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]