У меня есть одна таблица, которую я выбираю с помощью кода: Код A
Select TDS, TL, IK
From (Select Sheet1.TOOLING_DATA_SHEET As TDS, Sheet1.CUTTING_TOOL As TL, ENT_ITEM_MASTER.ITEM_KEY As IK
From Sheet1
Inner Join ENT_ITEM_MASTER
On ENT_ITEM_MASTER.ITEM_CODE=Sheet1.CUTTING_TOOL And ENT_ITEM_MASTER.USER_LAST_MODIFIED Is Not Null) As A
Вывод:
TDS TL IK
TDS-1980D-10+OP10+S7 TL-000032 1
TDS-1980D-10+OP10+S7 TL-000019 34
TDS-2258-01+OP10+S4 TL-000016 53
TDS-2325PU+OP10+S1 TL-000036 7
TDS-1234-56-78 TL-000123 45
и еще одна таблица, которую я выбираю с кодом: Код B
Select ENT_LINK_OBJECTS.OBJ_NAME, ENT_ITEM_MASTER.ITEM_CODE, ENT_ITEM_MASTER.ITEM_KEY
From ENT_LINK_OBJECTS
Inner Join ENT_ITEM_MASTER
On ENT_ITEM_MASTER.ITEM_KEY=ENT_LINK_OBJECTS.ENTITY_KEY And ENT_ITEM_MASTER.USER_LAST_MODIFIED Is Not Null) As B
Вывод:
OBJ_NAME ITEM_CODE ITEM_KEY
TDS-1980D-10+OP10+S7 TL-000032 1
TDS-1980D-10+OP10+S7 TL-000019 34
TDS-2258-01+OP10+S4 TL-000032 28
TDS-2258-01+OP10+S4 TL-000016 53
TDS-2325PU+OP10+S1 TL-000036 7
TDS-2325PU+OP10+S1 TL-000009 9
У меня есть левое соединение таблиц в рабочем коде, который дает мне все, что есть в таблице A, чего нет в таблице B.
Теперь я пытаюсь правильно присоединиться к таблицам, что даст мне все, что есть в таблице B, чего нет в таблице A. Прямо сейчас на выходе ничего нет.
Полный код для Right Join:
Select TDS, TL, IK
From (Select Sheet1.TOOLING_DATA_SHEET, Sheet1.CUTTING_TOOL, ENT_ITEM_MASTER.ITEM_KEY
From Sheet1
Inner Join ENT_ITEM_MASTER
On ENT_ITEM_MASTER.ITEM_CODE=Sheet1.CUTTING_TOOL And ENT_ITEM_MASTER.USER_LAST_MODIFIED Is Not Null) As A
Right Join (Select ENT_LINK_OBJECTS.OBJ_NAME As TDS, ENT_ITEM_MASTER.ITEM_CODE As TL, ENT_ITEM_MASTER.ITEM_KEY As IK
From ENT_LINK_OBJECTS
Inner Join ENT_ITEM_MASTER
On ENT_ITEM_MASTER.ITEM_KEY=ENT_LINK_OBJECTS.ENTITY_KEY And ENT_ITEM_MASTER.USER_LAST_MODIFIED Is Not Null) As B
On A.TOOLING_DATA_SHEET=B.TDS
Where A.TOOLING_DATA_SHEET is Null
Текущий выход:
TDS TL IK
Желаемый результат: (все в B, чего нет в A)
TDS TL IK
TDS-2258-01+OP10+S4 TL-000032 28
TDS-2325PU+OP10+S1 TL-000009 9
Я могу добавить свой рабочий код для моего левого соединения, если это полезно. Я также попытался переключить области выбора, выполнить левое соединение и изменить оператор Null, чтобы попытаться выполнить левое соединение, которое также не дает вывода.
ИЗМЕНИТЬ:
Как мой код работает с левым соединением:
Select TDS, TL, IK
From (Select Sheet1.TOOLING_DATA_SHEET As TDS, Sheet1.CUTTING_TOOL As TL, ENT_ITEM_MASTER.ITEM_KEY As IK
From Sheet1
Inner Join ENT_ITEM_MASTER
On ENT_ITEM_MASTER.ITEM_CODE=Sheet1.CUTTING_TOOL And ENT_ITEM_MASTER.USER_LAST_MODIFIED Is Not Null) As A
Left Join (Select ENT_LINK_OBJECTS.OBJ_NAME, ENT_ITEM_MASTER.ITEM_CODE, ENT_ITEM_MASTER.ITEM_KEY
From ENT_LINK_OBJECTS
Inner Join ENT_ITEM_MASTER
On ENT_ITEM_MASTER.ITEM_KEY=ENT_LINK_OBJECTS.ENTITY_KEY And ENT_ITEM_MASTER.USER_LAST_MODIFIED Is Not Null) As B
On A.TDS=B.OBJ_NAME
Where B.OBJ_NAME is Null
ВЫВОД: (все в A, чего нет в B)
TDS TL IK
TDS-1234-56-78 TL-000123 45
SELECT OBJ_NAME, ITEM_CODE, ITEM_KEY
вместоSelect TDS,TL,IK
Если я прав, ваш текущий вывод может отображаться пустым, но он показывает 2 пустых строки! - person xQbert   schedule 02.07.2015AND A.TL=B.Item_Code and A.IK = B.Item_key
к правильным критериям присоединения - person xQbert   schedule 02.07.2015on
послеright join
, но, очевидно, B еще не определен, поэтому я не знаю, куда его поместить @xQbert - person user4888   schedule 02.07.2015TDS-1234-56-78 TL-000124 46
в таблицу A иTDS-1234-56-78 TL-000123 45
в таблицу B, и ваше левое соединение перестанет работать правильно. Другими словами, ваши левые соединения работают, потому что у вас, к счастью, нет данных, которые дали бы вам неверные результаты! Обычно левый и правый критерии соединения ДОЛЖНЫ быть одинаковыми. вы просто НЕ ДОЛЖНЫ иметь то же самое из-за ваших данных на этот раз. - person xQbert   schedule 02.07.2015