Автор: Scorp_Freeman 16.12.2007 22:54
Пытаюсь построить БД состоящую из 4 таблиц: Заказчик, Заказы, Производитель и Изделия.
Как я представляю себе эту базу я изобразил на схеме. Полей там будет побольше, что в принцыпе пока маловажно)
Только вот проблемка что я могу связать Фирму и Изделия( ведь не все фирмы могут производить весь ассортимент...
Далее мне из базы надо будет написать след. запросы:
Подсчитать на какую сумму Заказчик1 заказал изделий Изделие1 фирмы Фирма1;
Какие изделия производит Фирма1.
Проблемно для меня определиться со структурой БД (
Добавлено через 12 мин.
Или может быть в "Заказах" знать о производитель не особо важно....
тогда я думал можеттак(прикрепил)... Но тогда все изделия имеют одинаковую цену не зависящую от производителя
Эскизы прикрепленных изображений
Автор: hardcase 17.12.2007 13:43
Цитата(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 18.12.2007 21:43
А можно делать так?
Код
SELECT Поставщики.id, Фирма.name
FROM Поставщики INNER JOIN Фирма,Изделия ON Поставщики.id_firma=Фирма.id AND Фирма.name='Sony' AND Изделия.Caption='Телевизор' AND Изделия.id_post IN=Поставщики.id);
Т.е. обьединить больше двух связаных между собой таблиц, а то у меня выдает ошибку при этом запросе
"Ошибка синтаксиса в предложении FROM"
Автор: hardcase 19.12.2007 5:58
Цитата(Scorp_Freeman @ 18.12.2007 17:43)
А можно делать так?
"Ошибка синтаксиса в предложении FROM"
Действительно. Моя ошибка. Извиняюсь.
Код
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
Для проверки вашего запроса требуется более полная схема БД.