2015-09-19 2 views

ответ

1
select 
    in.ItemNo 
    ,ip.ItemPrice 
    ,c.CustomerName 
from  inventories as in 
left join InventoryPrice as ip on ip.itemno = in.itemno 
right join Customer  as c on ip.CustId = c.CustId 

Обратите внимание, что синтаксис обращенного на наследство присоединиться к результатам кода в замешательстве лево- затем правой присоединиться. Это, по-видимому, является ошибкой в ​​устаревшем коде, но нельзя быть уверенным, не зная точно структуры данных.

+0

Вы правы, я пробовал это и не дал мне результат в качестве старого. Знакомство с CROSS JOIN делает эту работу, но мне было интересно, могу ли я этого избежать. Но если CROSS JOIN - это то, что в конечном итоге делает соединение с наследством, это прекрасно. – Aryan

+0

@ Арий: Это вопрос о том, является ли ассоциативность устаревшего синтаксиса левой или правой ассоциативной для второго соединения; Я не мог найти хорошую ссылку на старый синтаксис. Попробуйте сделать оба соединения LEFT OUTER и посмотреть, согласуется ли это с устаревшим синтаксисом, - который должен выполнить CROSS JOIN между 'Inventories' и' Customer', который затем LEFT OUTER соединяется с 'InventoryPrice' –

-2
SELECT in.ItemNo, ip.ItemPrice, c.CustomerName 
FROM inventories AS in 
LEFT JOIN InventoryPrice AS ip ON ip.itemno = in.itemno 
LEFT JOIN Customer AS c ON ip.CustId = c.CustId 
+3

Последнее 'left join' должно быть« правильным соединением ». Этот ответ неверен. – Buzinas

Смежные вопросы