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

Откуда: Харьков
Сообщений: 11
Здраствуйте, у меня возникла необходимость объединения 3х таблиц, помогите с запросом пожалуйста.
Вот структура бд:

CREATE TABLE [dbo].[Product](
[ProductId] int IDENTITY(1,1) NOT NULL PRIMARY KEY,
[artikul] varchar(50) ,
[opt] smallint NOT NULL DEFAULT (0),
[rozn] smallint NOT NULL DEFAULT (0))
GO
CREATE TABLE [dbo].[Shop](
[ShopId] int IDENTITY(1,1) NOT NULL PRIMARY KEY,
[name] varchar(50) )
GO
CREATE TABLE [dbo].[Ostatki](
[id] int IDENTITY(1,1) NOT NULL PRIMARY KEY,
[ProductId] int NULL DEFAULT (0),
[ShopId] int NULL DEFAULT (0),
[r33] int NULL DEFAULT (0),
[r34] int NULL DEFAULT (0),
[r35] int NULL DEFAULT (0))
GO
ALTER TABLE dbo.Ostatki ADD CONSTRAINT
FK_Ostatki_Product FOREIGN KEY
(
ProductId
) REFERENCES dbo.Product
(
ProductId
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.Ostatki ADD CONSTRAINT
FK_Ostatki_Shop FOREIGN KEY
(
ShopId
) REFERENCES dbo.Shop
(
ShopId
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
INSERT INTO [ask_forum].[dbo].[Shop]([name])VALUES ('Shop 1')
INSERT INTO [ask_forum].[dbo].[Shop]([name])VALUES('Shop 2')
INSERT INTO [ask_forum].[dbo].[Shop]([name])VALUES('Shop 2')
GO
INSERT INTO [ask_forum].[dbo].[Product] ([artikul],[opt],[rozn])VALUES ('A11-1',125,150)
INSERT INTO [ask_forum].[dbo].[Product] ([artikul],[opt],[rozn])VALUES('B12-2',105,170)
INSERT INTO [ask_forum].[dbo].[Product] ([artikul],[opt],[rozn])VALUES('C13-3',65,100)
GO
INSERT INTO [ask_forum].[dbo].[Ostatki]([ProductId],[ShopId],[r33],[r34],[r35]) VALUES (1,1,0,2,3)
INSERT INTO [ask_forum].[dbo].[Ostatki]([ProductId],[ShopId],[r33],[r34],[r35]) VALUES (2,1,0,0,1)
INSERT INTO [ask_forum].[dbo].[Ostatki]([ProductId],[ShopId],[r33],[r34],[r35]) VALUES (3,1,1,0,0)
INSERT INTO [ask_forum].[dbo].[Ostatki]([ProductId],[ShopId],[r33],[r34],[r35]) VALUES (1,2,5,0,0)
GO


собственно мой запрос:
SELECT dbo.Shop.[ShopId],[artikul],[r33],[r34],[r35]
FROM ask_forum.dbo.Shop
left join dbo.Ostatki on dbo.Shop.ShopId=dbo.Ostatki.ShopId
inner join dbo.Product on dbo.Ostatki.ProductId= dbo.Product.ProductId

он работает, но мне необходимо получать все магазины, если в каком то магазине нет товара, что бы там был ноль. Другими словами мне необходимо отобразить запросом все товары и их наличие во всех магазинах, а где таких товаров нету чтобы был количество ноль.
Буду очень благодарен за помощь..
Заранее спасибо..
7 июн 09, 00:45    [7273478]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по объединению 3х таблиц  [new]
stimpi
Member

Откуда: Киев, Украина
Сообщений: 662
Используйте тег SRC для кода.
SELECT dbo.Shop.[ShopId],[artikul],
  ISNULL([r33], 0) AS r33, ISNULL([r34], 0) AS r34,
  ISNULL([r35], 0) AS r35
FROM dbo.Shop
cross join dbo.Product 
left join dbo.Ostatki on dbo.Ostatki.ProductId = dbo.Product.ProductId
                         and dbo.Ostatki.ShopID = dbo.Shop.ShopID
7 июн 09, 01:12    [7273499]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по объединению 3х таблиц  [new]
lepton
Member

Откуда: Протвино
Сообщений: 1261
(Shop cross join Product) left join ostatki
условия сами поставьте.
7 июн 09, 01:14    [7273502]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по объединению 3х таблиц  [new]
dj_pulia
Member

Откуда: Харьков
Сообщений: 11
stimpi
Используйте тег SRC для кода.
SELECT dbo.Shop.[ShopId],[artikul],
  ISNULL([r33], 0) AS r33, ISNULL([r34], 0) AS r34,
  ISNULL([r35], 0) AS r35
FROM dbo.Shop
cross join dbo.Product 
left join dbo.Ostatki on dbo.Ostatki.ProductId = dbo.Product.ProductId
                         and dbo.Ostatki.ShopID = dbo.Shop.ShopID



супер, спасибо..
7 июн 09, 10:14    [7273641]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить