|
|
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, есть запрос, который изумительно работает в 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 содержит кроме связывания ещё пару таблиц. Можно ваще что-либо сделать, или это уже смертельно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 18:20 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
Все нормально. Он на что-то другое кричит. Кстати, вместо ISNULL надо поставить nz. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 18:23 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
И слово OUTER лишнее. Наверно, это и есть вся проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 18:24 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
Он говорит, не поддерживаю выражение объединения. Я убираю Фирма, Товар_покупка, в результате -ошибок не находит, но и соответственно не работает. Не в силах осмыслить-глюк это 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 Фирма.фирма, Модель.модель, Модель.артикул; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 19:44 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
Акцесс не умеет в одном запросе обрабатывать 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 Фирма.фирма, Модель.модель, Модель.артикул; (сорри за возможные ошибки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 20:45 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
сэнкс, всё рулит акромя глюков некоторых, умножает почему-та расход в 2 раза, не все, что самое интересное)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 21:12 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
Интересно, всегда ли можно преобразовать к запросу с джойнами запрос, который обязан быть без джойнов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 21:42 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч Саныч, это ты про что спросил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 23:03 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
Автор вопроса показал селект без джойнов. У меня сложилось впечатление, что это обязательное требование: две первых таблицы должны участвовать в селекте без привязки к остальным, давая декартово произведение всех записей. И тут Geo взял и присоединил эти две таблицы к остальным через одному ему ведомые поля, и к моему удивлению автор вопроса это принял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 23:08 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
авторИ тут Geo взял и присоединил эти две таблицы к остальным через одному ему ведомые поля, и к моему удивлению автор вопроса это принял. :) Эти поля у автора в условии where прописаны. Интересно правда, почему cross join у него, а не inner. Но это не мои проблемы. Я показал еще одну ошибку, а не выдал готовый запрос. Если автор уберет группировку, он увидит, какие записи у него "удваиваются", и сам перепишет запрос. Коль скоро он на скуле пишет, с акцессом, наверное, справится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 23:22 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч 1) Geo в приципе правильно оценил ситуацию - Access, действительно, к этому недружелюбно. 2) предложение FROM всегда описывает единый набор даннных, фильтруемый фильтруемый частью WHERE, из этого набора производтся SELECT. Всегда, когда в части FROM указано более одной таблицы, подразумевается JOIN, какой именно, может быть уточнено как в самом выражении FROM явно, так и в выражении WHERE с использованием хинта + (тогда LEFT OUTER или RIGHT OUTER ) или без хинтов, тогда INNER или CROSS в зависимости от того, как записаны связи полей. Это шибко древняя техника. В Jet SQL хинта + нет, а в TSQL - есть, и в adp им можно пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 23:25 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
Мне очень неудобно. Я знаю про то, что можно использовать WHERE вместо ON. Просто я невнимательно прочитал исходный селект. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 23:58 |
|
||
|
чем в Access заменить двойное внешнее связывание таблиц??
|
|||
|---|---|---|---|
|
#18+
а мне тоже очень неудобно - я про хинты наврал - он не + - он * *= - Left Join =* - Right Join и про то, что Jet sQl их нет - тоже - не проверял -) ЗЫ1 - среди Ораклистов легко встретить человека, который с глубоким изумлением на явный джойн в выражении FROM взирать будет - они почти сплошь в терминах хинтов думать обучены. ЗЫ2 - об этом неплохо иногда вспоминать, что WHERE - фактически перегруженный, тогда запросы быстрее отлаживаются -) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2004, 00:17 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1642&tid=1675075]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 341ms |

| 0 / 0 |
