Помощь - Поиск - Пользователи - Календарь
Полная версия: Структура БД
Форум «Всё о Паскале» > Разработка ПО, алгоритмы, общие вопросы > Общие вопросы разработки программ
Scorp_Freeman
Пытаюсь построить БД состоящую из 4 таблиц: Заказчик, Заказы, Производитель и Изделия.

Как я представляю себе эту базу я изобразил на схеме. Полей там будет побольше, что в принцыпе пока маловажно)


Только вот проблемка что я могу связать Фирму и Изделия( ведь не все фирмы могут производить весь ассортимент...

Далее мне из базы надо будет написать след. запросы:

Подсчитать на какую сумму Заказчик1 заказал изделий Изделие1 фирмы Фирма1;
Какие изделия производит Фирма1.

Проблемно для меня определиться со структурой БД (

Добавлено через 12 мин.
Или может быть в "Заказах" знать о производитель не особо важно....

тогда я думал можеттак(прикрепил)... Но тогда все изделия имеют одинаковую цену не зависящую от производителя

hardcase
Цитата(Scorp_Freeman @ 16.12.2007 18:54) *

Только вот проблемка что я могу связать Фирму и Изделия( ведь не все фирмы могут производить весь ассортимент...

Это связь многие-ко-многим. Реализуется через промежуточную таблицу (таблица маппинга изделий на фирмы) - Vendor_Products. В этой таблице всего 2 поля: Product_id и Vendor_id. Оба поля представляют собой первичный ключ.

Чтобы получить все продукты выпускаемые фирмой с id = 15 достаточно выполнить простой внешний джойн:
Код

SELECT p.Product_id, p.Title
FROM Vendor_Products AS vp LEFT OUTER JOIN Products AS p
ON vp.Vendor_id = 15

Scorp_Freeman
А можно делать так?

Код

SELECT Поставщики.id, Фирма.name
FROM  Поставщики  INNER JOIN Фирма,Изделия ON Поставщики.id_firma=Фирма.id AND Фирма.name='Sony' AND Изделия.Caption='Телевизор' AND  Изделия.id_post IN=Поставщики.id);



Т.е. обьединить больше двух связаных между собой таблиц, а то у меня выдает ошибку при этом запросе
"Ошибка синтаксиса в предложении FROM" unsure.gif
hardcase
Цитата(Scorp_Freeman @ 18.12.2007 17:43) *
А можно делать так?

"Ошибка синтаксиса в предложении FROM" unsure.gif

Действительно. Моя ошибка. Извиняюсь.
Код

SELECT p.Product_id, p.Title
FROM Vendor_Products AS vp JOIN Products AS p
ON vp.Vendor_id = p.Product_id
WHERE vp.Vendor_id = 15


Для проверки вашего запроса требуется более полная схема БД.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.