Как я могу получить точное совпадение по приведенному ниже сценарию? - PullRequest
0 голосов
/ 02 сентября 2010

Как я могу присоединиться к таблицам ниже

  TableA    TableB             TableC           TableD
  ID ID_C  ID  ID_A Value       ID            ID  ID_C Value
   1  1     1   1    a          1              1   1    a
            2   1    b                         2   1    b

, чтобы получить результат типа

  Result
  ID ID_B Value  ID_C ID_D Value
  1   1     a      1     1  a
  1   2     b      1     2  b

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

Чтобы упростить его,

   Resultant Table           TableA              TableB
   ID   Value                ID Value            ID  ID_A
    1   a                     1  a               1    1        
    1   b                     2  g               2    1
    2   a                     3  d               3    2
    3   c                                        4    3

Теперь мне нужно соединить Результирующую таблицу с помощью TableA, TableB, чтобы получить некоторые столбцы из TableA, TableB и ResultantTable.ID = TableA.ID и TableB.ID_A = TableA.ID, поскольку он является внешним ключом.

Выполнение соединения с TableB превращается в дубликаты.Так как ID = 1 встречается дважды, я получаю 4 записи, где ID = 1, когда есть только 2 записи.Это может быть сделано с помощью отдельных или групп, но мне нужно, чтобы отображались и другие столбцы. Как мне сделать оба в процессе.

Ответы [ 3 ]

0 голосов
/ 02 сентября 2010

Вы говорите нам, что поле "значение" в TableB не должно отличаться от поля "значение" в TableD?Можем ли мы заменить B.ID = D.ID на B.Value = D.Value, чтобы решить вашу проблему?

Вы уверены, что именно так и должно работать?

0 голосов
/ 03 сентября 2010

Попробуйте:

SELECT A.ID, B.ID ID_B, B.Value Value_B, C.ID ID_C, D.ID ID_D, D.Value Value_D
FROM TableA A
JOIN TableB B ON A.ID = B.ID_A
JOIN TableC C ON A.ID_C = C.ID
JOIN TableD D ON B.Value = D.Value AND C.ID = D.ID_C
0 голосов
/ 02 сентября 2010
SELECT A.ID, B.ID, B.Value, C.ID, D.ID, D.Value
FROM TableA A
INNER JOIN TableB B ON A.ID = B.ID_A
INNER JOIN TableC C ON A.ID_C = C.ID
INNER JOIN TableD D ON B.ID = D.ID AND C.ID = D.ID_C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...