Как создать индивидуальные цены на продукты для каждого покупателя? - PullRequest
0 голосов
/ 07 февраля 2019

Я настраиваю базу данных, которая будет использоваться для выставления счетов-фактур.у нас разные рабочие места с разными ценами на нашу продукцию.Когда я вступаю в новую работу, мне бы хотелось, чтобы она указывала на наши цены по умолчанию и могла изменять ее только для этого клиента.У нас более 100 продуктов, и только некоторые из них получают измененную цену за работу, поэтому загружается по умолчанию.

1 Ответ

0 голосов
/ 08 февраля 2019

Это требует отношения между клиентами и продуктами, реализуемого соединительной таблицей, содержащей определенную цену для клиента.Предполагая, что у вас есть Таблица Customer с CustomerID в качестве первичного ключа и таблица Product с ProductID в качестве первичного ключа, новая таблица выглядит следующим образом:

Table CustomerPrice
-------------------
CustomerID  Number/Long, no default value, required
ProductID   Number/Long, no default value, required
Price       Number/Decimal, Scale 2, no default value, required

Основнойключ должен быть составным (CustomerID, ProductID).Это гарантирует, что может быть только одна специфическая цена для каждого продукта.

Добавьте отношения между Customer.CustomerID и CustomerPrice.CustomerID с каскадом удаления и между Product.ProductID и CustomerPrice.ProductID с каскадом удаления.(Вы можете сделать все это в пользовательском интерфейсе.)

Цена по умолчанию будет храниться непосредственно в таблице Product.

Вы можете выбрать такую ​​цену товара, как эта

SELECT x.CustomerID, x.CustomerName, x.ProductID, x.ProductName, Nz(cp.Price, x.Price) AS Price
FROM
    (SELECT c.CustomerID, c.Name AS CustomerName, p.ProductID, p.Name AS ProductName, p.Price
     FROM Customer c, Product p) x
    LEFT JOIN CustomerPrice AS cp ON x.ProductID = cp.ProductID AND x.CustomerID = cp.CustomerID;

Это дает конкретную цену для клиента, когда она доступна, и цену продукта по умолчанию, в противном случае.

Если вам нужны данные для конкретного клиента или продукта, добавьте предложение WHERE во вложенный SELECT

SELECT x.CustomerID, x.CustomerName, x.ProductID, x.ProductName, Nz(cp.Price, x.Price) AS Price
FROM
    (SELECT c.CustomerID, c.Name AS CustomerName, p.ProductID, p.Name AS ProductName, p.Price
     FROM Customer c, Product p
     WHERE c.CustomerID = 7 AND p.ProductID = 10) x
    LEFT JOIN CustomerPrice AS cp ON x.ProductID = cp.ProductID AND x.CustomerID = cp.CustomerID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...