Member 11856456 Ответов: 2

Как мне получить внутреннее соединение с 4 таблицами для работы (VB.NET)


На данный момент я могу получить 3 таблицы для слияния с помощью внутреннего соединения, но я не могу найти способ получить 4+ таблицы внутреннего соединения.

Вот мой код:

Dim sqlcon As New SqlConnection("sqlstring")
     Dim sqladapt As New SqlDataAdapter("Select * From profile inner join (cemeteries inner join cemetery_reference on cemeteries.Cemetery_ID = cemetery_reference.Cemetery_ID)  on Profile.Individual_ID = Cemeteries.Individual_ID", sqlcon)

     sqlcon.Open()
     sqladapt.SelectCommand.ExecuteNonQuery()

     Dim DT As New DataTable
     sqladapt.Fill(DT)
     DataGridView1.DataSource = DT
     sqlcon.Close()



Я все время получаю "неправильный синтаксис"

Что я уже пробовал:

Я попробовал поставить двойную скобку после слова from, однако по-прежнему получаю ту же синтаксическую ошибку.

Maciej Los

Что СУБД?

2 Ответов

Рейтинг:
13

Maciej Los

Вы не предоставили информацию о СУБД. Тем не менее...
Количество таблиц, доступных для объединения в рамках одного запроса, зависит от СУБД...

"Типичный" запрос выглядит следующим образом:

SELECT A.<List_Of_Fields>, B.<List_Of_Fields>, C.<List_Of_Fields>, D.<List_Of_Fields>
FROM Table1 AS A
    INNER JOIN Table2 AS B ON A.PrimaryKey = B.ForeignKey
    INNER JOIN Table3 AS C ON B.PrimaryKey = C.ForeignKey
    INNER JOIN Table4 AS D ON C.PrimaryKey = D.ForeignKey


Существует несколько типов соединений. Видеть: Визуальное представление SQL-соединений[^]

Для получения более подробной информации, пожалуйста, смотрите:
сервер MS SQL: Запрос с помощью соединений[^]
доступ MS: Объединение таблиц и запросов - доступ[^]


CHill60

5 б

Maciej Los

Спасибо, Кэролайн.

Рейтинг:
0

Super Lloyd

вы должны попробовать свой SQL в SqlManagement, для более быстрой отладки SQL! ;)
Во всяком случае, я сразу же сплюнул один бу (там могло быть и больше ...)

Select * From profile inner join (cemeteries inner join ...
а должно быть, наоборот
Select * From profile inner join (select * from cemeteries inner join ...


Member 11856456

это для таблицы 3, но как насчет соединения таблиц 4?

CHill60

Суб-запроса? Зачем ты это сделал? Не путайтесь в скобках (которые требуются для доступа)

Member 11856456

на самом деле просмотр видео на 3-м столе inner join привел меня к видео доступа. Я последовал этому примеру, и он сработал, но не смог заставить его работать с таблицей 4. Однако приведенный выше пример помог, и я вижу, в чем была моя ошибка.