powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / чем в Access заменить двойное внешнее связывание таблиц??
13 сообщений из 13, страница 1 из 1
чем в Access заменить двойное внешнее связывание таблиц??
    #32495478
miracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, есть запрос, который изумительно работает в SQL Server нужно очень перенести его в Access , вопрос как это сделать, если он не поддерживает двойное внешшнее связывание?
SELECT
Фирма.фирма,
Модель.модель,
Модель.артикул,
Sum(Товар_покупка.единицы_вх) AS Приход,
ISNULL(Sum(Товар_продажа.единицы),0) AS Расход,
Sum(Товар_покупка.единицы_вх)-ISNULL(Sum(Товар_продажа.единицы),0) AS Остаток
FROM
Фирма,
Товар_покупка,
Модель LEFT OUTER JOIN Товар_продажа ON Модель.id_m = Товар_продажа.модель
WHERE
Модель.id_m = Товар_покупка.модель AND
Модель.фирма = Фирма.id_f
GROUP BY
Фирма.фирма,
Модель.модель,
Модель.артикул;
Ругается на то, что FROM содержит кроме связывания ещё пару таблиц.
Можно ваще что-либо сделать, или это уже смертельно :)
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495479
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Все нормально. Он на что-то другое кричит.

Кстати, вместо ISNULL надо поставить nz.
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495480
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
И слово OUTER лишнее. Наверно, это и есть вся проблема.
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495499
miracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он говорит, не поддерживаю выражение объединения. Я убираю Фирма,
Товар_покупка, в результате -ошибок не находит, но и соответственно не работает. Не в силах осмыслить-глюк это Accessa или мой :))

SELECT Фирма.фирма, Модель.модель, Модель.артикул, Sum(Товар_покупка.единицы_вх) AS Приход, nz(Sum(Товар_продажа.единицы),0) AS Расход, Sum(Товар_покупка.единицы_вх)-nz(Sum(Товар_продажа.единицы),0) AS Остаток
FROM
Фирма,
Товар_покупка,
Модель LEFT JOIN Товар_продажа ON Модель.id_m = Товар_продажа.модель
WHERE Модель.id_m = Товар_покупка.модель AND
Модель.фирма = Фирма.id_f
GROUP BY Фирма.фирма, Модель.модель, Модель.артикул;
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495509
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Акцесс не умеет в одном запросе обрабатывать CROSS JOIN и LEFT JOIN. Можно переделать например так

SELECT Фирма.фирма, Модель.модель, Модель.артикул, Sum(Товар_покупка.единицы_вх) AS Приход, nz(Sum(Товар_продажа.единицы),0) AS Расход, Sum(Товар_покупка.единицы_вх)-nz(Sum(Товар_продажа.единицы),0) AS Остаток
FROM
((Модель LEFT JOIN Товар_продажа ON Модель.id_m = Товар_продажа.модель) LEFT JOIN Фирма On Модель.фирма = Фирма.id_f) LEFT JOIN
Товар_покупка ON Модель.id_m = Товар_покупка.модель
GROUP BY Фирма.фирма, Модель.модель, Модель.артикул;

(сорри за возможные ошибки)
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495514
miracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сэнкс, всё рулит акромя глюков некоторых, умножает почему-та расход в 2 раза, не все, что самое интересное))
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495529
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Интересно, всегда ли можно преобразовать к запросу с джойнами запрос, который обязан быть без джойнов...
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495568
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Саныч, это ты про что спросил?
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495574
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Автор вопроса показал селект без джойнов. У меня сложилось впечатление, что это обязательное требование: две первых таблицы должны участвовать в селекте без привязки к остальным, давая декартово произведение всех записей. И тут Geo взял и присоединил эти две таблицы к остальным через одному ему ведомые поля, и к моему удивлению автор вопроса это принял.
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495580
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ тут Geo взял и присоединил эти две таблицы к остальным через одному ему ведомые поля, и к моему удивлению автор вопроса это принял.
:)
Эти поля у автора в условии where прописаны. Интересно правда, почему cross join у него, а не inner. Но это не мои проблемы. Я показал еще одну ошибку, а не выдал готовый запрос. Если автор уберет группировку, он увидит, какие записи у него "удваиваются", и сам перепишет запрос. Коль скоро он на скуле пишет, с акцессом, наверное, справится.
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495583
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч

1) Geo в приципе правильно оценил ситуацию - Access, действительно, к этому недружелюбно.

2) предложение FROM всегда описывает единый набор даннных, фильтруемый фильтруемый частью WHERE, из этого набора производтся SELECT.
Всегда, когда в части FROM указано более одной таблицы, подразумевается JOIN, какой именно, может быть уточнено как в самом выражении FROM явно, так и в выражении WHERE с использованием хинта + (тогда LEFT OUTER или RIGHT OUTER ) или без хинтов, тогда INNER или CROSS в зависимости от того, как записаны связи полей. Это шибко древняя техника. В Jet SQL хинта + нет, а в TSQL - есть, и в adp им можно пользоваться.
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495599
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мне очень неудобно. Я знаю про то, что можно использовать WHERE вместо ON. Просто я невнимательно прочитал исходный селект. :^)
...
Рейтинг: 0 / 0
чем в Access заменить двойное внешнее связывание таблиц??
    #32495605
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а мне тоже очень неудобно - я про хинты наврал - он не + - он *
*= - Left Join
=* - Right Join
и про то, что Jet sQl их нет - тоже - не проверял -)

ЗЫ1 - среди Ораклистов легко встретить человека, который с глубоким изумлением на явный джойн в выражении FROM взирать будет - они почти сплошь в терминах хинтов думать обучены.

ЗЫ2 - об этом неплохо иногда вспоминать, что WHERE - фактически перегруженный, тогда запросы быстрее отлаживаются
-)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / чем в Access заменить двойное внешнее связывание таблиц??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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