Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Помогите создать запрос с помощью команды Select Есть две таблицы: tab_tovar (buyerk-код покупателя, tovar-покупаемый им товар-товары постоянно повторяются) и tab_price (dates-дата изменения цены,buyerk-код покупателя,tovar-покупаемый им товар,price-цена) По указанным значениям buyerk и dates необходимо создать запрос Результат запроса - таблица с полями: tovar, price, где tovar - виды товаров указанного покупателя, price - цена этих товаров на данный момент (тоесть предыдущая дата изменения цены) Ой, вроди понятно ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 13:15 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Давай попробуем. Необходимо выбрать действующие цены: Select Max(Dates), ...; From tab_Price; Where Dates <= <заданое значение ДАТЫ>; Into cursor/Table <Имя курсора/Табл> Таким образом мы получим действующие цены на товары А дальше уже по коду твоего покупателя Попробуй сначала раздельными запросами а потом если получиться то загони в один! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 13:51 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 14:10 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Ну почти получилось.... пишу... (название колонок другое...) 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 ..... неполучается или может можно это сделать сразу в первом селекте Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 14:09 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 14:28 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Работает... но результат: dates - price 11.10.04 - 960 10.10.04 - 970 12.10.04 - 930 20.10.04 - 1000 а нужно только: price 1000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 15:36 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Ну тогда убирай Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 16:37 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
убираю 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2004, 13:51 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Тебе ответили 2 раза относительно правильно (первые 2 ответа) - только надо было выбрать тот вариант что тебе нужен (с ограничением Dates <= <заданое значение ДАТЫ> или без этого ограничения). А что потом пошло - это уже ты не понимаешь чего тебе пишут, или не удосужился даже попробовать :( Ещё раз попробуй вариант AleksMed - возможно добавив условие на дату (как писал AlikWishin в самом начале) в первый запрос - если надо не "последние/сегодняшние" цены, а "действовавшие на момент X". Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2004, 22:27 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Тебе ответили 2 раза относительно правильно (первые 2 ответа) - только надо было выбрать тот вариант что тебе нужен (с ограничением Dates <= <заданое значение ДАТЫ> или без этого ограничения). А что потом пошло - это уже ты не понимаешь чего тебе пишут, или не удосужился даже попробовать :( Ещё раз попробуй вариант AleksMed - возможно добавив условие на дату (как писал AlikWishin в самом начале) в первый запрос - если надо не "последние/сегодняшние" цены, а "действовавшие на момент X". Posted via ActualForum NNTP Server 1.0 Ну зачем так резко. Я ведь только учусь. Хорошо Вам знающим. А вот мне базу срочно надо написать. Вот пишу и одновременно учусь.. В любом случае Всем большое спасибо за помощь. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2004, 23:53 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Потому что после 2-х правильных ответов пошла какая-то непонятная переписка. Я подумал что ты просто не попробовал их, или не вник :( Извини, если задел за живое. Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2004, 00:19 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
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-й версии должно отрабатывать!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2004, 10:36 |
|
||
|
Прошу помощи Select
|
|||
|---|---|---|---|
|
#18+
Hi AlikWishin! Отрабатывать то оно будет, но НЕПРАВИЛЬНО. Для негруппируемого и неагрегируемого поля будет браться в лучшем случае последнее ФИЗИЧЕСКИ значение из группы, в худшем - ПРОИЗВОЛЬНОЕ. Заполни таблицы не в хронологическом порядке и проверь что получится :) Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2004, 22:25 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1595583]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 270ms |
| total: | 474ms |

| 0 / 0 |
