Как получить табличное значение, используя JOIN без каких-либо ссылок на него? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть две таблицы, и я хочу объединить эти таблицы.
(*) рядом с именем столбца означает, что это первичный ключ, (**) означает, что внешний ключ

//table_document
ID_DOC*      DOC     STATUS
 DOC01       AAA          1
 DOC02       BBB          1
 DOC03       CCC          1
 DOC04       DDD          1
 DOC05       EEE          1

//table_vendor_document
   NO*   ID_VEND**     ID_DOC**
     1     VEND01       DOC01
     2     VEND01       DOC02
     3     VEND01       DOC03
     4     VEND01       DOC04
     5     VEND01       DOC05
     6     VEND02       DOC01
     7     VEND02       DOC02
     8     VEND02       DOC05
     9     VEND03       DOC03
    10     VEND03       DOC04

в каждом ID_VEND должно быть пятьID_DOC и я хочу узнать, какой ID_DOC отсутствует в каждом ID_VEND

Я использую этот запрос:

SELECT table_vendor_document.ID_VEND,table_document.ID_DOC FROM `table_document` 
LEFT OUTER JOIN table_vendor_document 
    ON table_document.ID_DOC = table_vendor_document.ID_DOC 
WHERE table_vendor_document.ID_VEND = 'VEND03'

Результат:

ID_VEND     ID_DOC
VEND03       DOC03     
VEND03       DOC04

и мой ожидаемый результатдолжно быть:

ID_VEND     ID_DOC
VEND03        NULL     
VEND03        NULL     
VEND03       DOC03
VEND03       DOC04
VEND03        NULL

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Ваше условие "ВКЛ" заставляет запрос извлекать только те строки, в которых внешний ключ table_vendor_document равен первичному ключу table_document.В строках VEND03 есть только два внешних ключа: DOC03 и DOC04.Строки VEND03 не ссылаются ни на какие другие строки table_document, поэтому вы получаете такой результат.

0 голосов
/ 20 декабря 2018

Просто переключите порядок столов.table_vendor_document left join table_document.

SELECT table_vendor_document.ID_VEND,table_document.ID_DOC FROM `table_vendor_document` 
LEFT OUTER JOIN table_document
    ON table_document.ID_DOC = table_vendor_document.ID_DOC 
WHERE table_vendor_document.ID_VEND = 'VEND03'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...