powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Множественны LEFT JOIN в ACCESS
17 сообщений из 17, страница 1 из 1
Множественны LEFT JOIN в ACCESS
    #36354257
arnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Волей судеб пришлось поработать в ЭТОМ... Пытаюсь к одной таблице присоединить несколько других, набираю на честном SQL следующий запрос

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT d.id_device, c.city, s.street, st.street_type, b.building, e.entrance
FROM device AS d 
LEFT JOIN city AS c ON d.id_city=c.id_city
LEFT JOIN street AS s ON d.id_street=s.id_street
LEFT JOIN street_type AS st ON s.id_street_type=st.id_street_type
LEFT JOIN building AS b ON d.id_building=b.id_building
LEFT JOIN entrance AS e ON d.id_entrance=e.id_entrance;

И аксес на него материться что запрос не верный... Где и что я упустил в синтаксисе акссеса?
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #36354279
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скобки.

Есть удобный тип для джетовского SQL (как-то так, потому что с джетом ен работаю, может кто поправит):

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT d.id_device, c.city, s.street, st.street_type, b.building, e.entrance
FROM device AS d, city AS c, street AS s, street_type AS st, ...
d LEFT JOIN city AS c ON d.id_city=c.id_city, 
d LEFT JOIN street AS s ON d.id_street=s.id_street.
s LEFT JOIN street_type AS st ON s.id_street_type=st.id_street_type
d LEFT JOIN building AS b ON d.id_building=b.id_building
d LEFT JOIN entrance AS e ON d.id_entrance=e.id_entrance
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #36354284
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Читайте факи, прежде чем задавать вопрос. Нужно поставить скобки.
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #36354366
arnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если, честно, то не очень понял, как мне скобки расставил конструктор, то получилось, что JOIN делается к предыдущему JOIN, а не к первой таблице, со всеми вытекающими.
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #36354420
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
arnikполучилось, что JOIN делается к предыдущему JOIN, а не к первой таблице
Да, так и есть. И подозреваю, что без скобок тоже так.
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #36354426
arnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Санычarnikполучилось, что JOIN делается к предыдущему JOIN, а не к первой таблице
Да, так и есть. И подозреваю, что без скобок тоже так.

Спасибо. Все у этого майкрософта через Ж.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Множественны LEFT JOIN в ACCESS
    #38453407
Thisroot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
arnik,
не думаю что Майкрософт сознательно бы менял канонический вид SQL запросов, скорее всего все из за того. что у них имеется мастер составления запросов, а он сами понимаете скорее всего накладывает ограничения на формирование логики запроса, потому скорее всего у них и все через Ж
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #38453568
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thisrootскорее всего все из за того. что у них имеется мастер составления запросовНет.
Это следствие выборанного способа хранения запроса. Он преобразуется во внутренний язык и хранится в формализованном виде. Если текст запроса не формализуется имеющимися алгоритмами - он хранится в исходном виде. Однако возможен промежуточный вариант - текст формализуется, но его формализованное представление зависит от порядка формализации. В этом случае формализатор, чтобы избежать ошибки, просто выдаёт сообщение о нарушении синтаксиса (и он прав - лучше перебдеть).

Согласись, что эквивалентность (t1 left join t2) left join t3 и t1 left join (t2 left join t3) несколько сомнительна...
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #38453846
Thisroot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Я кстати то же искал по сети решение данного вопроса, нашел какие то ответы, но составить грамотный запрос так и не получилось.
Я не знаю где там у Майрософт факи но по поводу множественных left / rigth jion -ов информации мало, попробовал построить запрос по найденному не получилось, может подскажете?

Обязательно использовать "AS"?

Делал что то вроде того:


SELECT A,B,C
FROM A LEFT JOIN (B LEFT JOIN C ON C.1 = A.1) ON B.1 = A.2;

Ничего не понятно.

В общем есть таблица А, в ней поля. A.3 - наименование, A1 - индекс привязанный к ключевым полям С.1, A.2 - индекс привязанный к полям B.2

Я просто до join еще не дошел по книге, а задача стала на уровне работы.
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #38453847
Thisroot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Thisroot,

SELECT * FROM Таблица1 LEFT JOIN (Таблица2 LEFT JOIN Таблица3 ON Таблица3.[1]=Таблица1.[1]) ON Таблица2.[12]=Таблица1.[1]

вот такое решение нашел но не получилось.


Еще один ответ:
Цитата Сообщение от skorik-1992 Посмотреть сообщение
Я пытался, он делает через inner join, а мне нужно именно left
А мышкой на связь щёлкнуть и выбрать нужное объединение? Трудно?

А как тогда в мастере запросов тип соединения выбрать?
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #38453951
Кошка!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мышкой же по линии связи
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #38453957
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thisrootпо поводу множественных left / rigth jion -ов информации мало
Готовясь написать запрос, который устроит Майкрософтовский парсер, приготовьте пару коробок круглых скообок... короче - скобки ВЕЗДЕ! и где надо, и где вроде бы нафиг не надо... это раз.
Два - никаких звёздочек. Надо сотню полей в выводе? пиши всю сотню по одному. Не переломишься.
Далее - AS формально нафиг не нужен. Однако страдает читабельность как минимум. Отнесись к нему так же, как к скобкам.
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #38454286
Thisroot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кошка!,

Спасибо не догадался.
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #38454397
Кошка!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На схеме данных тоже можно по связям тыкать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Множественны LEFT JOIN в ACCESS
    #39118265
СергейЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор=ThisrootSELECT * FROM Таблица1 LEFT JOIN (Таблица2 LEFT JOIN Таблица3 ON Таблица3.[1]=Таблица1.[1]) ON Таблица2.[12]=Таблица1.[1]

вот такое решение нашел но не получилось.


Не получилось потому, что надо так:

SELECT * FROM (Таблица1 LEFT JOIN Таблица2 ON Таблица2.[1]=Таблица1.[1]) LEFT JOIN Таблица3 ON Таблица3.[1]=Таблица1.[1]

Следите за скобками!
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #39119084
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
СергейЯСледите за скобками!
А что не так было со скобками? (a+b)+c или a+(b+c) - какая разница?
...
Рейтинг: 0 / 0
Множественны LEFT JOIN в ACCESS
    #39119404
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Владимир СанычСергейЯСледите за скобками!
А что не так было со скобками? (a+b)+c или a+(b+c) - какая разница?
Отвечаю сам себе:
Таблица 2 LEFT JOIN Таблица3 ON Таблица3.[1]=Таблица 1 .[1]
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Множественны LEFT JOIN в ACCESS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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