我希望你理解我的问题,在我的数据库上有ord_detail
和custom_ord_detail
表
ord_detail
-------------------------------------------------
ordID | custID | productID |quantity | discount |
-------------------------------------------------
002 | 1 | 5 | 2 | 0 |
-------------------------------------------------
custom_ord_detail
--------------------------------------------------------
ordID | custID | custom_productID |quantity | discount |
--------------------------------------------------------
002 | 1 | 2 | 1 | 0 |
-------------------------------------------------
ordID
->主键auto_increment(在第二个表中ordID
是主键auto_increment,外键引用表称为custom_ord_reply
(
custID
->外键参考客户表,productID
-> 外键是指产品表,custom_productID
外键是指客户在custom_ord_request表中请求产品的custom_ord_reply表。
在我们带来特定产品后,我们将其存储到custom_ord_reply
中,现在我们使用ord_detail
&custom_ord_detail
当用户将产品添加到购物车中时,我们使用联合所有来显示购物车中的所有产品,如果客户想要更新数量或删除特定产品如何做到这一点,因为它们将是ordID
列的重复值, 如何解决这个问题?任何想法 联合所有与加入
查看您的查询,我想要在两个查询中添加一个新的属性/列,如果两个表中的ordID
都是唯一的ord_detail
,product_type
,custom_ord_detail
'product' as product_type // 1st query
'custom' as product_type // 2nd query
如果没有,则查询中有 2 个新属性/列,第一个product_type
如上所述,第二个为两个查询添加一些唯一标识符,例如第一个查询包括产品 ID 和第二个查询包括请求 ID(我假设表custom_ord_request
中的请求 ID 设置为自动递增(
SELECT p.id as uid, 'product' as product_type, od.ordID , p.prod_name , p.prod_descrip , p.price , od.quantity , od.discount
FROM ord_detail od
JOIN product p ON od.productID = p.productID
WHERE od.custlD = 1
UNION ALL
SELECT rq.id as uid, 'custom' as product_type, cod.ordID , rq.ord_title , rp.description , rp.price , cod.quantity cod.discount
FROM custom_ord_detail cod
JOIN custom_ord_reply rp ON cod.custom_prod_servID = rp.custom_prod_servID
JOIN custom_ord_request rq ON rp.ordID = rq.ordID
WHERE cod.custlD = 1
通过这种方式,您可以区分您的产品和购物车的定制产品。
另一种方法是为表定义超类型/子类型关系。
- 数据库设计 - 文章、博客文章、照片、故事
- 类别之间的超型/亚型决定:完全不相交或不完全重叠
- 关系设计 - 将多个表合并为一个外键列?