Я работаю над соединением и не могу получить нужный мне набор результатов. Нарисую сценарий:
У меня есть 2 таблицы:
Таблица данных
+----+-------+
| ID | Name |
+----+-------+
| 10 | Test1 |
| 11 | Test2 |
| 12 | Test3 |
| 13 | Test4 |
| 14 | Test5 |
| 15 | Test6 |
+----+-------+
Присоединиться к столу
+----+-----+-----+-----+
| ID | FID | GID | Val |
+----+-----+-----+-----+
| 10 | 3 | | abc |
| 10 | | 1 | def |
| 11 | 3 | | ijk |
| 12 | | 1 | lmn |
| 13 | 4 | | opq |
+----+-----+-----+-----+
Ожидаемый набор результатов
+---------------+-----------------+---------------+----------------+----------------+
| Data table id | Data table name | Join Tabe FID | Join Table GID | Join Table Val |
+---------------+-----------------+---------------+----------------+----------------+
| 10 | Test1 | 3 | | abc |
| 11 | test2 | 3 | | ijk |
| 12 | test3 | | 1 | lmn |
+---------------+-----------------+---------------+----------------+----------------+
Мой запрос
Select
*
from
datatable A
join jointable b
on
A.ID = B.ID
and B.FID = 3
join jointable c
on
A.ID = C.ID
and C.GID = 1
and C.FID <> null
Что происходит, так это то, что соединение таблицы C выполняется для набора результатов соединения между таблицами A и B, поэтому набор результатов пуст.
Я хочу, чтобы соединение таблицы C применялось к таблице A, а не к набору результатов соединения между таблицами A и B; что приведет к ожидаемому набору результатов.
Кто-нибудь может помочь?
Спасибо
id
равным 3, поэтому я ожидаю, чтоB.ID = 3
отфильтрует все записи. - person Gordon Linoff   schedule 15.03.2016