gpt4 book ai didi

php - 表 2 中的三个连接字段覆盖表 1 中的三个连接字段

转载 作者:行者123 更新时间:2023-11-29 06:49:28 25 4
gpt4 key购买 nike

用户创建新客户。客户拥有产品订阅。

user
========
user_id
name

customer
========
customer_id
user_id
name

subscription
========
customer_id
product_id

我有一个产品表,用于存储所有用户的“主”定价:

product
========
product_id
name
price

但我可以为某些用户覆盖部分或全部产品的价格。

user_price
========
product_id
user_id
price

我正在为需要产品价格/覆盖价格的表订阅编写触发器。由于覆盖的价格基于 user_id,但我不将 user_id 存储在此表中,因此我如何编写一个语句,根据为此订阅设置的 customer_id 从客户表中检索 user_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;

我的设计效率如何?我应该保持这样还是开始在订阅上存储 user_id 。 ?

最佳答案

您可以通过多种方式执行此操作,具体取决于您的数据库支持的内容。 case 语句会更灵活,但您也可以使用 ISNULL 函数,它应该非常可移植。

SELECT u.Name [UserName], c.Name [CustomerName], p.Name [Product Name]
, isnull(up.price, p.price) [User or Product Price]
from user u
join customer c on u.user_id = c.user_id
join subscription s on c.customer_id = s.customer_id
left join user_price up on s.product_id = up.product_id and u.user_id = up.user_id

关于php - 表 2 中的三个连接字段覆盖表 1 中的三个连接字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com