|
|
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
Есть 4 таблицы: - purchase (заказ) - purchase_item (позиции заказа) - price (прайс) - exchange_rate (курс валюты) Вопрос №1 Правильно ли организована структура таблиц? Как это делается в нормальных учётных системах. Вопрос №2 На заданной структуре надо вывести список заказов в формате: Заказ | сумма заказа по курсу на дату заказа Причём это надо сделать одним выражением без вложенных запросов. Я уже всё перепробовал, ничего не получается. Спотыкаюсь уже на формировании прайса на заданную дату. В прикреплении тестовая БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 11:18:38 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 11:19:21 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
Уважаемые! Скажите пожалуйста - вопрос задан неверно или это что-то супер трудное? неужели никто так не хранит данные? Помогите пожалуйста :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 11:55:19 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
Млин что то я совсем не помимаю твою структуру. Ладно собственно попытаюсь по-ламерски так сказать решить твою проблему. Оттолкнусь от своей структуры, она весьма похожа на твою. Таблица 1 ID Товара|Наименование Товара | Цена в $ Таблица 2 Номер Заказа| ID Товара | Дата продажи Таблица 3 Дата | Курс $ ID Товара - уникальный индекс для каждого товара Наименование Товара - Полное имя товара (ARDO 84 KX) Номер заказа - не обязательно счетчик, но поскольку товара в одном заказе может быть несколько наименований лучше придумать какое-то обозначение, которое бы не помогло через некоторое время повторится. Со счетчиком оч. много проблем по ходу может возникнуть, читай темы форума ;) Да и не разбираюсь я пока особо так что тут твой полет фантазии. Остальные поля думаю понятны :) Теперь сам запрос Запускаешь конструктор ACCESS`a :) Там проводишь не хитрые операции - выставляешь отношения между таблицами Связываешь : ID Товара В Таблице 1 и ID Товара в Таблице 2 Дата продажи В Таблице 2 и Дата в Таблице 3 Если немного подождешь кину SQL запрос... Ща накрапаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 14:34:55 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
Видимо я всё таки я вопрос задал не оч. правильно. Упростим задачу: - есть табл. Price, в которой o price_id - уникальный идентификатор записи o product_id – идентификатор товара o date_from- дата, с которой начинает действовать цена o price – соответственно цена в рублях Необходимо сформировать прейскурант - допустим на текущую дату. Но SQL выражение не должно содержать вложенных подзапросов. Это условие из-за того, что как сервер используется MySQL, а там нельзя сделать вложенный подзапрос. Со вложенным получатся примерно следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Знатока SQL – надежда только на вас! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 15:31:39 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
так тебе знаток MySQL нужен - тут кажется радом форум... ... ну, а где-нибудь - в предложении WHERE, например, подзапросы использовать можно? Или там прямо в предложении SELECT, где поля отбора перечисляются? Если нихде низзя, то, наверно, придется дату окончания действия цены явно ваять, и пользовать BETWEEN (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 15:42:22 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
>так тебе знаток MySQL нужен - тут кажется радом форум... не, на том форуме движение очень слабое. И я почему то уверен что лучшие спецы по SQL находятся на форуме по SQL Server и Access. Наглядный этому пример – помощь создания запроса самому ЛП J (Как-то был прикол, что при трудоустройстве на новое место работы ты говоришь что знаешь ЛП – тебя сразу же берут) ... >ну, а где-нибудь - в предложении WHERE, например, подзапросы использовать можно? Или там прямо в предложении SELECT, где поля отбора перечисляются? Загвоздка в том, что использовать вложенные запросы нельзя. Нигде. Если нихде низзя, то, наверно, придется дату окончания действия цены явно ваять, и пользовать BETWEEN Можно поподробнее? Дата окончания действия цены конечно всегда есть. Если смотреть на мою структуру, то как раз purchase.rec_created. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 16:21:25 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
А без вложенного подзапроса обращаться к результатам другого запроса можно? Если да, то вынеси вложенный в отдельный. Если нет, то работай посредством временной таблицы вместо отдельного запроса. И вообще, вопросы по запросам к MySQL надо задавать в MySQL. Мобыть все-таки переложить туда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 16:47:26 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
если запрос к линкованным таблицам (т.е. обрабатывается джетом), то можно забыть о синтаксисе MySql. Как линковать (в запросе джета) по ... ON price.Date<=zakaz.Date счтобы шустро считалось джетом тут проскакивало с год назад в аналогичной задачке о расчете курса (вернее сумм с учетом курса)) Если же запрос к серверу, то такого рода вещи надо оформлять хранимками. (ибо скорость счета при большом количестве записей будет невысока из-за max() и пр. групповых операций (к тому же еще в подзапросах). А это уже вопрос возможностей конкретного сервера. (где-то шустро через темповые таблички, где-то - открытием курсора) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 18:16:21 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
2 Geo >А без вложенного подзапроса обращаться к результатам другого запроса можно? MySQL не сохраняет запросы, представления. Там нет такого понятия (по крайней мере в версии 4.* которой пользуюсь я) >Если нет, то работай посредством временной таблицы вместо отдельного запроса. Видимо придётся идти по этому пути, только вот есть нюанс: - Я делаю выборки посредством запроса к серверу. Из него надо обращаться к временным таблицам. Временные таблицы, как в SQL Server, существут только в рамках текущего connection. Как узнать в каком cnn создавать временную таблицу? Может кто сталкивался >И вообще, вопросы по запросам к MySQL надо задавать в MySQL. Мобыть все-таки переложить туда? Не, не надо :) 2 мммм >если запрос к линкованным таблицам (т.е. обрабатывается джетом), то можно забыть о синтаксисе MySql. Как линковать (в запросе джета) по ... ON price.Date<=zakaz.Date счтобы шустро считалось джетом тут проскакивало с год назад в аналогичной задачке о расчете курса (вернее сумм с учетом курса)) Что-то я не нашёл ничего путного. Если работать с линковаными таблицами - то при моей инструкции всё считается довольно медленно. >Если же запрос к серверу, то такого рода вещи надо оформлять хранимками. (ибо скорость счета при большом количестве записей будет невысока из-за max() и пр. групповых операций (к тому же еще в подзапросах). А это уже вопрос возможностей конкретного сервера. (где-то шустро через темповые таблички, где-то - открытием курсора) Нет в MySQL хранимок. И курсоров нет. как бы это не было прискорбно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 09:20:56 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
Так-с, все-таки надо в MySQL это дело Что скажет стая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 09:31:39 |
|
||
|
SQL выражение: Заказ | сумма заказа по курсу на дату заказа
|
|||
|---|---|---|---|
|
#18+
Я не знаю. Если только для общего развития, чтобы "на том форуме движение очень слабое" не было. К тому же по connection-ам это уже не столько к MySQL. Хотя кто ее знает, как там устроена работа с временными таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 09:43:18 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=45&tid=1671924]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
17ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 265ms |

| 0 / 0 |
