Объединение 4 таблиц в SQL - PullRequest
0 голосов
/ 30 мая 2018

У меня вопрос по поводу объединения 4 таблиц.Это мой запрос.

SELECT  
    a.pick_id, a.Serial_No, a.Work_Ord_No, a.Lot_No, 
    a.Product_no, a.Plan_Qty, a.Machine_no, a.shift, a.Scan_dt, 
    b.Trml_code,
    case when c.Wire_Type is null then '-' else c.Wire_Type +' '+ c.Wire_Size+' '+c.Wire_Color end as Wire,
    case when d.Mtrl_code is null then '-' else d.Mtrl_code end as Material
FROM
    pickMaster a 
JOIN
    pickTerminal b ON b.id = a.id 
JOIN
    pickWire c ON c.id = a.id 
JOIN
    pickInserting d ON d.id = a.id

Это данные для 4 таблицы до того, как я к ним присоединюсь.

enter image description here

И это результат после того, как я присоединюсь к ним.

enter image description here

Проблема в том, что после того, как я присоединяюсь к таблице 4, результат показывает 4 строки с одинаковыми данными о материале и проводе.Как это решить?Есть идеи?

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

У вас есть декартово произведение между pickTerminal и pickInserting.
Вам нужно как-то соединить эти две таблицы.

Пример !!Это единственный атрибут, который я считаю распространенным?!

SELECT  
    a.pick_id, a.Serial_No, a.Work_Ord_No, a.Lot_No, 
    a.Product_no, a.Plan_Qty, a.Machine_no, a.shift, a.Scan_dt, 
    b.Trml_code,
    case when c.Wire_Type is null then '-' else c.Wire_Type +' '+ c.Wire_Size+' '+c.Wire_Color end as Wire,
    case when d.Mtrl_code is null then '-' else d.Mtrl_code end as Material
FROM
    pickMaster a 
JOIN
    pickTerminal b ON b.id = a.id 
JOIN
    pickWire c ON c.id = a.id 
JOIN
    pickInserting d ON d.id = a.id
    and d.mtrl_side = b.Trml_side <-- add this

, но без контекста сложно сказать, как можно это заархивировать.

0 голосов
/ 30 мая 2018

Поскольку вам не нужна никакая информация из 3-й или 4-й таблицы, кроме отдельных кодов материалов / терминалов, вы можете использовать левое соединение вместо соединения для двух последних соединений.

0 голосов
/ 30 мая 2018

Потому что у вас есть двойные идентификаторы ( 103 ) для последних двух таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...