![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.05.2013
Сообщений: 5
|
![]()
Здравствуйте!
Почему-то не получается вроде бы простая задача: Есть два запроса. Значения полей, которыми эти запросы связаны, повторяются. Но в 1-м запросе меньше повторений, чем во 2-м. Как объединить эти два запроса в третий так, чтобы количество записей было равно количеству записей в 1-м запросе (где меньше повторений)? Пробовал имитировать счетчик в 1-м запросе и ставить distinct в результирующем. Не помогает. (Имитация счетчика благополучно повторяется). |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Цитата:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 17.05.2013 в 17:43. |
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 17.05.2013
Сообщений: 5
|
![]()
Ну, с джоинами я, положим, немного знаком.
Есть еще идеи? |
![]() |
![]() |
![]() |
#4 |
Регистрация: 17.05.2013
Сообщений: 5
|
![]()
забыл пояснить изображение:
слева и справа два исходных запроса, по центру - то, что получается. Как видите, получается в два раза больше записей, чем надо. (left join, естественно, вставлен). |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
Здравствуйте Vub.
"..не получается вроде бы простая задача..", "..с джоинами я .. немного знаком.." "..Есть еще идеи?.." - для решения Вашей задачи нужны не идеи, а логика. ![]() Результат (средняя таблица на картинке) абсолютно верно отображает набор записей связанных по полю [Товар код]. При такой связи каждому номеру проводки левой таблицы будет соответствовать два номера проводки правой (конечно подразумевается уникальность записей в правой - Distinct) Если необходимо выбрать только одно значение примените агрегатную функцию получив из правой таблицы первое, последнее, максимальное или минимальное значение. (First, Last, Max, Min - надеюсь с ними Вы так-же знакомы ![]() Успехов Вам. Евгений. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 17.05.2013
Сообщений: 5
|
![]()
Здравствуйте, Евгений.
Должен сказать, что "в Акцессе" я недавно, поэтому - чуть более сложная задачка - и логика программы, действительно, начинает от меня ускользать. Меня терзают смутные сомнения по поводу применения предложенных Вами функций к данному случаю. Дело в том, что передо мной сейчас стоит задача подсчета прибыли в условиях изменения цен. Т.е. мне надо соотнести продажи к закупкам поштучно. Я отсортировал операции ("проводки") покупок, отсортировал продажи, "разгруппировал" их по количеству (т.е. каждая запись - единица товара). И вот теперь эти две разгруппировки мне надо "склеить" соответствующим образом для подсчета разниц в ценах закупки и продажи. Группировка правой таблицы (если я правильно Вас понял) здесь, имхо, не годится. Из нее надо взять столько записей, сколько было продано единиц соответствующего товара (по порядку, ФИФО), а остальное - отбросить. У Вас, похоже, опыта гораздо поболе моего. Что-то можете присоветовать? ![]() Спасибо. |
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Цитата:
теперь тоже самое (разгруппировка до отдельных + нумерация) для покупок. А теперь самое время все отдельные покупки и все отдельные продажи inner join по "порядковому" номеру. А потом суммирование и нахождение разницы (или же наоборот сначала разница потом суммирование). а вообще для таких задач удобнее работать(вычислять) на клиенте (в программе с использованием цикла!).
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#8 | ||
Регистрация: 17.05.2013
Сообщений: 5
|
![]()
Дак вроде добавил уже (Счетчик). Или надо что-то другое?
Цитата:
Цитата:
P.S. Надеюсь, очевидно, что Товар_Код 765 - далеко не единственный. (На скрине - результат фильтра по этому номеру для наглядности). SELECT DISTINCT Разгруппировка_продаж_счетчик.Счетч ик, Разгруппировка_продаж_счетчик.Товар _Код, Разгруппировка_продаж_счетчик.Опера ция_Товар_Код, Разгруппировка_продаж_счетчик.Цена, Разгруппировка_закупок_счетчик.Цена , Разгруппировка_закупок_счетчик.Опер ация_Товар_Код FROM Разгруппировка_закупок_счетчик INNER JOIN Разгруппировка_продаж_счетчик ON Разгруппировка_закупок_счетчик.Счет чик = Разгруппировка_продаж_счетчик.Счетч ик; Последний раз редактировалось Vub; 21.05.2013 в 14:04. |
||
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
так давайте так.
1. исходные таблицы (продажи/покупки) безо всяких группировок/разгруппировок. 2. проверим постановку задачи. есть две таблицы (1 покупки; 2 продажи ) надо в покупках набрать такое же количество товара какое есть во всех продажах (для данного товара). после это определить разницу сумма отобранной покупки - сумма всей продажи. Цитата:
Код:
Код:
НЕ ЗНАЮ позволит ли такое Access. А вообще говоря Access это не только SQL. Но еще и программа в т.ч. циклы и возможность навигации по НД (переход от одной записи к другой).
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 23.05.2013 в 12:38. |
|
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 12.08.2010
Сообщений: 1,079
|
![]()
может так получится
Код:
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение запросов | maksden | Microsoft Office Access | 7 | 26.02.2013 21:46 |
Объединение двух запросов | Xakand_2009 | БД в Delphi | 4 | 10.07.2012 15:05 |
Объединение двух запросов | KBO | БД в Delphi | 0 | 27.07.2011 02:25 |
объединение SCQ запросов | mad_dog4 | БД в Delphi | 4 | 06.12.2010 14:13 |
Объединение 2-х запросов | SlavaSH | БД в Delphi | 6 | 28.12.2009 10:08 |