powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL выражение: Заказ | сумма заказа по курсу на дату заказа
12 сообщений из 12, страница 1 из 1
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32681022
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 4 таблицы:
- purchase (заказ)
- purchase_item (позиции заказа)
- price (прайс)
- exchange_rate (курс валюты)

Вопрос №1
Правильно ли организована структура таблиц?
Как это делается в нормальных учётных системах.

Вопрос №2
На заданной структуре надо вывести список заказов в формате:
Заказ | сумма заказа по курсу на дату заказа
Причём это надо сделать одним выражением без вложенных запросов.

Я уже всё перепробовал, ничего не получается.
Спотыкаюсь уже на формировании прайса на заданную дату.

В прикреплении тестовая БД.
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32681024
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32682879
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые!

Скажите пожалуйста - вопрос задан неверно или это что-то супер трудное?
неужели никто так не хранит данные?

Помогите пожалуйста :)
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32683407
Фотография Access_Abuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин что то я совсем не помимаю твою структуру.
Ладно собственно попытаюсь по-ламерски так сказать решить твою проблему.
Оттолкнусь от своей структуры, она весьма похожа на твою.

Таблица 1

ID Товара|Наименование Товара | Цена в $

Таблица 2

Номер Заказа| ID Товара | Дата продажи

Таблица 3

Дата | Курс $





ID Товара - уникальный индекс для каждого товара

Наименование Товара - Полное имя товара (ARDO 84 KX)

Номер заказа - не обязательно счетчик, но поскольку товара в одном заказе
может быть несколько наименований лучше придумать какое-то обозначение, которое бы не помогло через некоторое время повторится.
Со счетчиком оч. много проблем по ходу может возникнуть, читай темы форума ;) Да и не разбираюсь я пока особо так что тут твой полет фантазии.

Остальные поля думаю понятны :)

Теперь сам запрос

Запускаешь конструктор ACCESS`a :)
Там проводишь не хитрые операции - выставляешь отношения между таблицами Связываешь :

ID Товара В Таблице 1 и ID Товара в Таблице 2

Дата продажи В Таблице 2 и Дата в Таблице 3

Если немного подождешь кину SQL запрос... Ща накрапаю
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32683614
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо я всё таки я вопрос задал не оч. правильно.

Упростим задачу:
- есть табл. Price, в которой
o price_id - уникальный идентификатор записи
o product_id – идентификатор товара
o date_from- дата, с которой начинает действовать цена
o price – соответственно цена в рублях

Необходимо сформировать прейскурант - допустим на текущую дату.
Но SQL выражение не должно содержать вложенных подзапросов.
Это условие из-за того, что как сервер используется MySQL, а там нельзя сделать вложенный подзапрос. Со вложенным получатся примерно следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT t1.product_id, t1.date_from,t1. price FROM price t1
INNER JOIN (
SELECT Max(price.product_id) as product_id , Max(price.date_from) as date_from
FROM price
WHERE price.date_from<=# 1 / 1 / 2005 #
GROUP BY price.product_id) t2
ON  t1.product_id = t2.product_id  and t1.date_from = t2.date_from
Вот и думаю, как бы от простого перейти к сложному, но пока что и простое особо не получается сделать.

Знатока SQL – надежда только на вас!
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32683661
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так тебе знаток MySQL нужен - тут кажется радом форум...
...
ну, а где-нибудь - в предложении WHERE, например, подзапросы использовать можно? Или там прямо в предложении SELECT, где поля отбора перечисляются?
Если нихде низзя, то, наверно, придется дату окончания действия цены явно ваять, и пользовать BETWEEN


(с выражением лица)
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32683782
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>так тебе знаток MySQL нужен - тут кажется радом форум...
не, на том форуме движение очень слабое.
И я почему то уверен что лучшие спецы по SQL находятся на форуме по SQL Server и Access.
Наглядный этому пример – помощь создания запроса самому ЛП J
(Как-то был прикол, что при трудоустройстве на новое место работы ты говоришь что знаешь ЛП – тебя сразу же берут)

...
>ну, а где-нибудь - в предложении WHERE, например, подзапросы использовать можно? Или там прямо в предложении SELECT, где поля отбора перечисляются?
Загвоздка в том, что использовать вложенные запросы нельзя. Нигде.

Если нихде низзя, то, наверно, придется дату окончания действия цены явно ваять, и пользовать BETWEEN
Можно поподробнее?
Дата окончания действия цены конечно всегда есть. Если смотреть на мою структуру, то как раз purchase.rec_created.
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32683838
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А без вложенного подзапроса обращаться к результатам другого запроса можно?
Если да, то вынеси вложенный в отдельный.
Если нет, то работай посредством временной таблицы вместо отдельного запроса.

И вообще, вопросы по запросам к MySQL надо задавать в MySQL. Мобыть все-таки переложить туда?
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32684050
мммм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если запрос к линкованным таблицам (т.е. обрабатывается джетом), то можно забыть о синтаксисе MySql. Как линковать (в запросе джета) по ... ON price.Date<=zakaz.Date счтобы шустро считалось джетом тут проскакивало с год назад в аналогичной задачке о расчете курса (вернее сумм с учетом курса))


Если же запрос к серверу, то такого рода вещи надо оформлять хранимками.
(ибо скорость счета при большом количестве записей будет невысока из-за max() и пр. групповых операций (к тому же еще в подзапросах). А это уже вопрос возможностей конкретного сервера. (где-то шустро через темповые таблички, где-то - открытием курсора)
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32684469
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo
>А без вложенного подзапроса обращаться к результатам другого запроса можно?

MySQL не сохраняет запросы, представления. Там нет такого понятия (по крайней мере в версии 4.* которой пользуюсь я)

>Если нет, то работай посредством временной таблицы вместо отдельного запроса.

Видимо придётся идти по этому пути, только вот есть нюанс:
- Я делаю выборки посредством запроса к серверу. Из него надо обращаться к временным таблицам. Временные таблицы, как в SQL Server, существут только в рамках текущего connection. Как узнать в каком cnn создавать временную таблицу? Может кто сталкивался

>И вообще, вопросы по запросам к MySQL надо задавать в MySQL. Мобыть все-таки переложить туда?

Не, не надо :)


2 мммм

>если запрос к линкованным таблицам (т.е. обрабатывается джетом), то можно забыть о синтаксисе MySql. Как линковать (в запросе джета) по ... ON price.Date<=zakaz.Date счтобы шустро считалось джетом тут проскакивало с год назад в аналогичной задачке о расчете курса (вернее сумм с учетом курса))

Что-то я не нашёл ничего путного.
Если работать с линковаными таблицами - то при моей инструкции всё считается довольно медленно.

>Если же запрос к серверу, то такого рода вещи надо оформлять хранимками.
(ибо скорость счета при большом количестве записей будет невысока из-за max() и пр. групповых операций (к тому же еще в подзапросах). А это уже вопрос возможностей конкретного сервера. (где-то шустро через темповые таблички, где-то - открытием курсора)

Нет в MySQL хранимок. И курсоров нет.
как бы это не было прискорбно :)
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32684491
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так-с, все-таки надо в MySQL это дело
Что скажет стая?
...
Рейтинг: 0 / 0
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
    #32684518
Гео
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю. Если только для общего развития, чтобы "на том форуме движение очень слабое" не было. К тому же по connection-ам это уже не столько к MySQL. Хотя кто ее знает, как там устроена работа с временными таблицами.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL выражение: Заказ | сумма заказа по курсу на дату заказа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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