SQL-комбинация соединений - PullRequest
       0

SQL-комбинация соединений

0 голосов
/ 27 сентября 2018

следующая база данных:

Table MatA:
ID  NomCom_ID   ProFo_ID
1   1           1
2   2           2

Table MatB:
ID  NomCom_ID   ProFo_ID
1   1           2
2   2           2

Table NomCom:
ID  Val
1   Steel
2   Copper

Table ProFo:
ID  Val
1   Sheet
2   Pipe

со следующим запросом я получаю таблицу MatA со связанными входами:

SELECT  M.ID,
  NomCom.Val AS NomCom,
  ProFo.Val AS ProFo
FROM MatA M
  LEFT JOIN NomCom      ON M.NomCom_ID = NomCom.ID
  LEFT JOIN ProFo       ON M.ProFo_ID = ProFo.ID
;

результат:

Table MatA:
ID  NomCom      ProFo
1   Steel       Sheet
2   Copper      Pipe

со следующимзапрос Я получаю только входные данные, доступные в таблице MatA AND MatB:

SELECT A.* FROM MatA A
  INNER JOIN MatB B
  ON A.NomCom_ID = B.NomCom_ID
  AND A.ProFo_ID = B.ProFo_ID
;

результат:

Table MatA:
ID  NomCom_ID   ProFo_ID
2   2           2

как правильный синтаксис для получения этого результата, но со связаннымиэлементы из вложенных таблиц, такие как:

Table MatA:
ID  NomCom      ProFo
2   Copper      Pipe

спасибо за любую помощь

1 Ответ

0 голосов
/ 27 сентября 2018

Если вы просто хотите получить подробную информацию о том, что это за идентификаторы, то вы просто присоединитесь к этим таблицам из идентификатора и получите поле значения.

SELECT A.ID, NomCom.Val, ProFo.Val FROM MatA A
INNER JOIN MatB B
   ON A.NomCom_ID = B.NomCom_ID AND A.ProFo_ID = B.ProFo_ID
LEFT JOIN NomCom AS n ON A.NomCom_ID = n.NomCom.ID
LEFT JOIN ProFo  AS p ON A.ProFo_ID = p.ProFo.ID

Это выполнит внутреннее соединение свы получите результат:

Table MatA:
ID  NomCom_ID   ProFo_ID
2   2           2

Тогда дополнительные объединения получат значения и вернут это:

Table MatA:
ID  NomCom      ProFo
2   Copper      Pipe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...