|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Опять взываю к помощи . есть таблица с расчетами одних и тех же отправлений (накладных) разными грузоперевозчиками. накладная№ первозчик цена12 перевозчик_а 128р.12 перевозчик_б 135р.12 перевозчик_с 125р.18 перевозчик_а 255р18 перевозчик_б 312р.18 перевозчик_с 270р.23 перевозчик_а Null23 перевозчик_б 500р.23 перевозчик_с Null......... Как составить запрос который выведет минимальную стоимость доставки для всех накладных с указанием грузоперевозчиков, в виде следующей таблицы? накладная№ первозчик цена12 перевозчик_с 125р.18 перевозчик_а 255р.23 перевозчик_б 500р........... Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:32 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaxim , Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:40 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
спасибо ! Agapov_stas mrmaxim , Код: sql 1. 2. 3.
Но тогда надо вначале необходимо таблицу с данными отсортировать по возрастающей. В противном случае first возращает первого перевозчика из множества группировки по накладной (а он не всегда минимальный). Можно ли в связанном подзапросе найти минимальную цену доставки в пределах одной накладной (накладная№ = накладная№_Temp ) и передать значение в главный запрос и вывести все столбцы * ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:55 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 15:04 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaximКак составить запрос который выведет минимальную стоимость доставки для всех накладных с указанием грузоперевозчиков, в виде следующей таблицы?А если два перевозчика предлагают равную минимальную цену - что выводить? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 15:10 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Akina, Кто раньше предложил, тот и получил! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 15:13 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Akina, Хороший вопрос! Я рейтингую грузоперевозчиков последующей схеме, кто больше сделает перевозок по минимальной цене тот и победитель. По хорошему нужно выводить обоих. Но не представляю как. Значит больше шансов у кого имя раньше/позже в списке. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 15:16 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaxim , Как вариант: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 15:18 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mds_world, Спасибо, работает! У меня такие же идеи были, но через два запроса, первым запросом по всему множеству найти все минимумы, а потом через связку двух ключей(накладная номер и сумма ) выбрать из основной таблицы остальные реквизиты ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 15:34 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Agapov_stas mrmaxim , Как вариант: Код: sql 1. 2. 3.
Стас, не могу понять что за "Таблица2" и "id"? Вы запросы в Notepad++ пишете? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 16:26 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaximчерез два запроса, первым запросом по всему множеству найти все минимумы, а потом через связку двух ключей(накладная номер и сумма) выбрать из основной таблицы остальные реквизиты Ну всё это вполне реализуется в одном запросе. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 16:34 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Akinamrmaximчерез два запроса, первым запросом по всему множеству найти все минимумы, а потом через связку двух ключей(накладная номер и сумма) выбрать из основной таблицы остальные реквизиты Ну всё это вполне реализуется в одном запросе. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Akina, спасибо , именно такой вложенный связанный запрос я и хотел реализовать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 17:02 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaximAgapov_stas mrmaxim , Как вариант: Код: sql 1. 2. 3.
Стас, не могу понять что за "Таблица2" и "id"? Вы запросы в Notepad++ пишете? Таблица2 - у себя проверял/тестировал, потому и название таблицы, какое было такое и использовал. Название таблицы естественно Ваше(можно было бы и догадаться самому) id - уникальный идентификатор, код/счетчик последовательной нумерации, должен быть в Вашей таблице(нету?тогда в любом случае нужно обзавестись им) По поводу Notepad++ , - с чего Вы взяли, что я в нем пишу?Это где-то отражается в моем тексте? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 07:09 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Agapov_stas, вопрос по id потянул вопрос по "таблице2". ID нет, так как данные идут из другого запроса с кучей Union по каждому перевозчику (их более 20 ти). По Notepad++ спрашиваю не из за праздного любопытства. При использовании запросов по подмножеству Dmin и проч . важно контролировать правильность синтаксиса, а именно парное количество различных скобок и кавычек. Встроенный редактор Access не позволяет это делать. Поэтому пользуюсь notepad++. А вы чем пользуетесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 12:40 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaximзапроса с кучей Union по каждому перевозчику (их более 20 ти). Уже интересно...Выложите текст запроса в студию. Полагаю, у Вас неверно спроектирована структура базы данных. Могу ошибаться, но эта фраза смущает. mrmaximА вы чем пользуетесь? Все в MS Access. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 12:48 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Agapov_stas, 1. у каждого перевозчика свой формат представления тарифов на перевозку, поэтому используются разные запросы для вычисления стоимости. Потом эти вопросы объединяются в один. 2. я не представляю как проверить все знаки припинания в подобном запросе в встроенном редакторе Access Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 13:26 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Не советую использовать Dfunction на больших массивах. Эти функции вызывают выполнение подзапроса на каждую запись исходной таблицы - фактически это просто форма записи коррелированного подзапроса... тормозилово может получиться невероятное. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 13:29 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Akina, это не большой массив. там присутствуют только отправления текущего дня. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 13:32 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Тогда пофиг. Но я бы всё одно ратовал за "всеобщий" код, а не за специфичный. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 13:48 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaximу каждого перевозчика свой формат представления тарифов на перевозку, поэтому используются разные запросы для вычисления стоимости. Потом эти вопросы объединяются в один. Не объясняет union, имхо. mrmaximя не представляю как проверить все знаки препинания в подобном запросе в встроенном редакторе Access Кому как удобно. mrmaxim , советую использовать советы mds_world , Akina . Я предложил вариант, а не верное решение (к сожалению). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 13:49 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaxim1. у каждого перевозчика свой формат представления тарифов на перевозку, поэтому используются разные запросы для вычисления стоимости. А почему данные не нормализуются в единый формат ПЕРЕД загрузкой в БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 14:33 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Akina, конечно можно было , но много возьни в Excel, даже с Power Query. Плюс идет регулярное обновление их тарифов, а полностью переход к нормализированному виду без ручных корректировок я не представляю как сделать. Если только ячейки в excell не обрабатывать в VBA. Например DHL у них все тарифы указаны от 0,5кг до 20 кг с шагом 0,5 с указанием тарифа для каждого веса (40 строк), далее для весов от 20 до 30 дана базовая ставка в 20 кг плюс довесок за каждые 0.5 кг . И так еще 3 диапазона до 250 кг. Если есть желание поломать голову могу прислать excell таблицу. Другие сразу вводят фиксированную часть и переменную для определенных пределов. Кто то округляет сразу до 1 кг, кто то до 0,5 кто то до 3х знаков после запятой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 16:23 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
mrmaximНапример DHL у них все тарифы указаны от 0,5кг до 20 кг с шагом 0,5 с указанием тарифа для каждого веса (40 строк), далее для весов от 20 до 30 дана базовая ставка в 20 кг плюс довесок за каждые 0.5 кг . И так еще 3 диапазона до 250 кг. Если есть желание поломать голову могу прислать excell таблицу. Мы уже где-то обсуждали вопрос, как хранить эту хрень, помнится... mrmaximДругие сразу вводят фиксированную часть и переменную для определенных пределов. Кто то округляет сразу до 1 кг, кто то до 0,5 кто то до 3х знаков после запятой. Ну не вижу проблемы. Всё это ложится в простую схему база - тариф за базу - тариф за превышение. Для упрощения базу можно развернуть в диапазон от-до. Если все работают с разными точностями - добавить поле точности, используемое как параметр для Round, непосредственно или условное. Уж в самом крайнем случае написать ПФ, которая примет все параметры груза и вернёт стоимость для указанного "ишака". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 17:09 |
|
Связанный подзапрос
|
|||
---|---|---|---|
#18+
Akina, приложил файл , как с минимальными ручными преобразованиями получить нормализованную таблицу (без VBA)? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 17:19 |
|
|
start [/forum/topic.php?fid=45&msg=39219244&tid=1613649]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 151ms |
0 / 0 |