用户创建新客户。客户拥有产品订阅。
user
========
user_id
name
customer
========
customer_id
user_id
name
subscription
========
customer_id
product_id
我有一个products表,它为所有用户存储“主”定价:
product
========
product_id
name
price
但我可以为一些用户覆盖部分或全部产品的价格。
user_price
========
product_id
user_id
price
我正在为需要产品价格/覆盖价格的表订阅编写触发器。既然覆盖的价格是基于用户id的,但我没有将用户id存储在此表中,那么如何编写一个语句,根据为此订阅设置的客户id从客户表中检索用户id,然后检索正确的价格?
SELECT `price`
FROM `product` p
LEFT JOIN `user_price` u
ON u.`user_id` = ???? AND u.`product_id` = NEW.product_id
INTO var_product_price;
我的设计效率如何?我应该这样保存它还是开始在订阅中存储用户id?
2条答案
按热度按时间h9vpoimq1#
从订阅表开始,然后加入客户,然后加入用户价格。
由于您必须有此订阅的客户,因此您可以在之前加入他们。
4nkexdtk2#
根据您的数据库支持的内容,您可以通过几种方式来实现这一点。case语句会更灵活,但是您也可以使用isnull函数,它应该是非常可移植的。