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

Откуда:
Сообщений: 409
Добрый вечер!
У меня стоит такая задача :
Есть три таблицы, связанных между собой.
Tovars :
Все товары
IdTovar
color
description
brandId (связана с Brands.IdBrand)
Brands :
Бренды товаров
IdBrand
nameBrand
VidTovaru :
Виды товаров определённого бренда
IdVid
nameVid
brandId (связана с Brands.IdBrand)
Каждый бренд имеет несколько видов товара.
Нужно вытащить все данные из таблицы Tovars, но вместо brandId вставить имя бренда и добавить nameVid из таблицы VidTovaru. Можно ли сделать это одним запросом? Или другим каким то способом. Подскажите как. Всё это у меня в хранимой процедуре находится, если это имеет значение.
Заранее спасибо.
26 сен 11, 22:33    [11338577]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из трёх таблиц  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Читайте про join.
26 сен 11, 22:47    [11338630]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из трёх таблиц  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Никак. У вас нет ключа в таблице TOVARS, привязанных к VIDTOVARU. И вы же сами говорите, что под одним брэндом может быть несколько видов товара. Значит. VidTovaru означает у вас "связки видов товаров с брендами", значит, nameVid там вообще не при делах... В целом, решения два:

- если эта задача строится на именно приведенных вами исходных условиях (скажем, это учебное задание) - то надо уточнять на примерах, что получимтсяв результате

- если это ваша разработка, то:

Надо изменить схему БД, например:
Tovars: Товары
IdTovar
Name
Color
Description
IdBrand (связан с Brands.Id)
IdVid (связан с VidT.Id)
Brands: Бренды товаров
Id
Name
VidT: Виды товаров
Id
Name

Ну и после этого составить SELECT достаточно элементарно...
26 сен 11, 23:36    [11338744]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из трёх таблиц  [new]
erman
Member

Откуда:
Сообщений: 409
Наверное воспользуюсь вторым вариантом, спасибо большое.
26 сен 11, 23:46    [11338767]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из трёх таблиц  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
erman,

Я тут упустил из рассмотрения в примере...
В Tovars не обязательно использовать имя поля "IdTovar" - используйте имя "Id"
26 сен 11, 23:52    [11338780]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из трёх таблиц  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Ну и в этом случае (при новой схеме) ваш запрос будет выглядеть примерно так:
SELECT v.Name as 'Vid', b.Name as 'Brand', a.Name, a.Color, a.Description
 FROM Tovars a
	join VidT v on a.IdVid=v.Id
	join Brands b on a.IdBrand=b.Id
ORDER BY Vid, Brand
27 сен 11, 00:32    [11338840]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из трёх таблиц  [new]
erman
Member

Откуда:
Сообщений: 409
Спасибо за помощь!
27 сен 11, 19:24    [11344497]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить