Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помощь с JOIN  [new]
user8474542
Member

Откуда:
Сообщений: 22
Здравствуйте, нужна помощь с JOIN.

Есть такой запрос:
SELECT [PurchaseOrderHeader].[Number]
      ,[PurchaseOrderItem].[Item]
	  ,[PurchaseOrderItem].[MaterialID]
      ,[PurchaseOrderItem].[Quantity]
	  ,[PurchaseOrderItem].[NetPrice] as 'Закупочная цена'
	  ,[SalesOrderHeader].[Number]
	  ,[SalesOrderItem].[Item]
	  ,[SalesOrderItem].[MaterialID]
	  ,[SalesOrderItem].[Quantity]
	  ,[SalesOrderItem].[NetPrice] as 'Продажная цена'
  FROM [dbo].[PurchaseOrderItem]
INNER JOIN [dbo].[SalesOrderHeader] ON [dbo].[SalesOrderHeader].[SalesOrderHeaderID] = [dbo].[PurchaseOrderItem].[SalesOrderItemID]
INNER JOIN [dbo].[SalesOrderItem] ON [dbo].[SalesOrderItem].[SalesOrderItemID] = [dbo].[PurchaseOrderItem].[SalesOrderItemID]
INNER JOIN [dbo].[PurchaseOrderHeader] ON [dbo].[PurchaseOrderHeader].[PurchaseOrderHeaderID] = [dbo].[PurchaseOrderItem].[PurchaseOrderHeaderID]
INNER JOIN [dbo].[Material] ON [dbo].[material].[materialid] = [dbo].[PurchaseOrderItem].[MaterialID]
--INNER JOIN [dbo].[Material] on [dbo].[material].[materialid] = [dbo].[SalesOrderItem].[MaterialID]
ORDER BY [PurchaseOrderHeader].[Number] desc


Помогите пожалуйста решить 2 проблемы:
- Как мне заджойниться корректно для в [dbo].[Material] и вывести значение из [dbo].[material].[materialid] для каждой таблицы ([dbo].[PurchaseOrderItem] и [dbo].[SalesOrderItem]
- Не выводит строки где [dbo].[PurchaseOrderItem].[SalesOrderItemID] равен NULL
24 авг 17, 14:52    [20747191]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с JOIN  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
user8474542
Не выводит строки где [dbo].[PurchaseOrderItem].[SalesOrderItemID] равен NULL
LEFT JOIN

Остальное пока не понял. Нет времени углубляться.

Вы бы алиасы для таблиц применяли. Чтобы проще читать было.
24 авг 17, 14:56    [20747201]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с JOIN  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3462
ну и
" [dbo].[PurchaseOrderItem].[SalesOrderItemID] равен NULL"

наверное
[dbo].[PurchaseOrderItem].[SalesOrderItemID] IS NOT NULL
24 авг 17, 15:03    [20747225]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с JOIN  [new]
user8474542
Member

Откуда:
Сообщений: 22
iap,

Спасибо, LEFT JOIN помогю

Про первый пункт, [dbo].[PurchaseOrderItem].[MaterialID] и [dbo].[SalesOrderItem].[MaterialID] мне нужно подтянуть значение по [dbo].[material].[materialid], но я не понимаю как сделать JOIN одновременно к одной таблице из двух других и вывести это значение в select.
24 авг 17, 15:08    [20747247]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с JOIN  [new]
user8474542
Member

Откуда:
Сообщений: 22
Еще момент, некорректно происходит JOIN

SELECT [PurchaseOrderHeader].[Number]
      ,[PurchaseOrderItem].[Item]
	  ,[PurchaseOrderItem].[MaterialID]
      ,[PurchaseOrderItem].[Quantity]
	  ,[PurchaseOrderItem].[NetPrice] as 'Закупочная цена'
	  ,[SalesOrderItem].[SalesOrderHeaderID]
	  ,[SalesOrderHeader].[SalesOrderHeaderID]
	  ,[SalesOrderHeader].[Number]
	  ,[SalesOrderItem].[SalesOrderItemID]
	  ,[SalesOrderItem].[Item]
	  ,[SalesOrderItem].[MaterialID]
	  ,[SalesOrderItem].[Quantity]
	  ,[SalesOrderItem].[NetPrice] as 'Продажная цена'
  FROM [dbo].[PurchaseOrderItem]
Left JOIN [dbo].[SalesOrderHeader] ON [dbo].[SalesOrderHeader].[SalesOrderHeaderID] = [dbo].[PurchaseOrderItem].[SalesOrderItemID]
LEFT JOIN [dbo].[SalesOrderItem] ON [dbo].[SalesOrderItem].[SalesOrderItemID] = [dbo].[PurchaseOrderItem].[SalesOrderItemID]
INNER JOIN [dbo].[PurchaseOrderHeader] ON [dbo].[PurchaseOrderHeader].[PurchaseOrderHeaderID] = [dbo].[PurchaseOrderItem].[PurchaseOrderHeaderID]
where PurchaseOrderHeader.Number like '%11772%'
ORDER BY [PurchaseOrderHeader].[Number] desc


Но почему то JOIN в таблицу [SalesOrderHeader] только для части строк, хотя ключ при этом в [SalesOrderItem].[SalesOrderHeaderID] присутствует.

К сообщению приложен файл. Размер - 13Kb
24 авг 17, 15:21    [20747285]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с JOIN  [new]
user8474542
Member

Откуда:
Сообщений: 22
user8474542,

Решил сам, бал некорректный JOIN, правильный:
Left JOIN [dbo].[SalesOrderHeader] ON [dbo].[SalesOrderHeader].[SalesOrderHeaderID] = [dbo].[SalesOrderItem].[SalesOrderHeaderID]


Вопрос выше по прежнему актуален.
24 авг 17, 15:24    [20747298]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с JOIN  [new]
user8474542
Member

Откуда:
Сообщений: 22
Решилось алиасами. всем спасибо.
24 авг 17, 15:58    [20747389]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить