powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / INNER JOIN из нескольких таблиц
10 сообщений из 10, страница 1 из 1
INNER JOIN из нескольких таблиц
    #37641560
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть три таблицы:

LS
=====
n_dom
n_ul

ULI
=====
n_uli

DOM
=====
n_dom
n_uli

Сразу видно, по каким полям должна пройти связь, но вложенные INNER JOIN запрещены, а с длинным условием JOIN возможен лишь для одной пары таблиц. Как же это сделать?

Фрагмент кода:
Код: sql
1.
2.
3.
SELECT ls.n_uli, uli.nn, ls.Fam & ' ' & ls.Im & ' ' & ls.Ot as FIO 
FROM ls 
INNER JOIN uli ON ls.n_uli = uli.n_uli;



и я еще пытаюсь добавить:
Код: sql
1.
INNER JOIN dom ON ls.n_dom = dom.n_dom;
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37641627
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shizuku
> но вложенные INNER JOIN запрещены, а с длинным условием JOIN возможен лишь для одной пары таблиц.

Это как???

> а с длинным условием JOIN возможен лишь для одной пары таблиц.

Это с какого перепугу???

Что тебе нужно, и какую пишет ошибку?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37641641
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Под длинным я имею ввиду:
Код: sql
1.
2.
3.
4.
5.
SELECT поля
FROM таблица1 INNER JOIN таблица2
ON таблица1.поле1 оператор_сравнения таблица2.поле1 AND
ON таблица1.поле2 оператор_сравнения таблица2.поле2) OR
ON таблица1.поле3 оператор_сравнения таблица2.поле3)]



А нужно мне выбрать поля из LS, плюс подтянуть соответствующие поля из двух других таблиц по n_dom и n_uli, благо что для каждой из этих двух они являются первичными.
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37641812
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Указывайте явно порядок связывания, используя скобки
Код: sql
1.
from (LS join DOM on LS.n_dom=DOM.n_dom) join ULI on DOM.n_uli=ULI.n_uli
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37641923
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Работает, но не то... :(
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37642010
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shizuku,

желательно указывать БД. Синтаксис запросов не всюду одинаков
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37642083
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_worldжелательно указывать БДи вообще, что этот топик делает в VB?...
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37642150
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Что делает? Живет! Обычный DBF фоксовый, подключается через ADO посредством VBA в книгу Excel.

А вот запрос, который меня уже устраивает:
Код: sql
1.
2.
3.
4.
SELECT ls.n_uli, uli.nn, dom.a_dom, ls.Fam & ' ' & ls.Im & ' ' & ls.Ot as FIO 
FROM DOM 
INNER JOIN (ULI INNER JOIN LS ON ULI.n_uli = LS.n_uli) 
ON (DOM.n_uli = LS.n_uli) AND (ULI.n_uli = DOM.n_uli) AND (DOM.n_dom = LS.n_dom);



Возможно можно как-то и короче, и проще... Не знаю.
В принципе выборка без ON (DOM.n_uli = LS.n_uli) содержит столько же записей, сколько и с ней

PS. Жаль тут поскупились на кнопочку "Редактировать"
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37642777
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShizukuAkina,
Работает, но не то... :(Я знаю, что порядок неверный. Но это потому, что Вы с ошибками написАли первый постинг.
Уж сделайте, наконец, что-нить самостоятельно - например, исправьте порядок на нужный.
...
Рейтинг: 0 / 0
INNER JOIN из нескольких таблиц
    #37643097
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас несоотвествие БД нормальной форме...
Зачем вам код улицы в LS, если у вас есть этот код в DOM?

И для Фокса INNER JOIN может быть с успехом заменен на WHERE <связь> AND <связь> ...
Так было в FPD и первых VFP (где не было JOIN), и всё работало...
То есть:
Код: sql
1.
2.
3.
SELECT a.n_uli, c.nn, b.a_dom, trim(a.Fam) & ' ' & trim(a.Im) & ' ' & trim(a.Ot) as FIO 
FROM LS a, DOM b, ULI c
WHERE a.n_dom=b.n_dom AND b.n_uli=c.n_uli
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / INNER JOIN из нескольких таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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