作者:依一勇婷16_639 | 来源:互联网 | 2024-12-17 22:47
我在实现将一个商品的所有信息整合到一行显示的需求时,虽然完成了任务,但感觉代码不够优雅,希望能得到更好的建议和改进方法。以下示例中的表结构是随机编写的,实际应用中的表设计合理性和数据库环境差异请自行调整。
需求描述:
将一件商品的所有相关表信息汇总并在一行中显示。
涉及的表结构如下:
表1 (table1):
商品ID(主键),商品名称,价格,规格
表2 (table2):
商品ID(主键),供应商ID(主键),供货日期,保质期
表3 (table3):
商品ID(主键),负责人,所属部门
附加条件:
每件商品由固定的四个供应商(标识为a, b, c, d)提供。
当前的SQL实现方式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SELECT t1.商品ID, t1.商品名称, t1.价格, t1.规格, t3.负责人, t3.所属部门, ta.供应商 AS 供应商a, ta.供货日期 AS 供货日期a, ta.保质期 AS 保质期a, tb.供应商 AS 供应商b, tb.供货日期 AS 供货日期b, tb.保质期 AS 保质期b, tc.供应商 AS 供应商c, tc.供货日期 AS 供货日期c, tc.保质期 AS 保质期c, td.供应商 AS 供应商d, td.供货日期 AS 供货日期d, td.保质期 AS 保质期d FROM table1 t1 JOIN table3 t3 ON t1.商品ID = t3.商品ID JOIN (SELECT * FROM table2 WHERE 供应商 = 'a') ta ON t1.商品ID = ta.商品ID JOIN (SELECT * FROM table2 WHERE 供应商 = 'b') tb ON t1.商品ID = tb.商品ID JOIN (SELECT * FROM table2 WHERE 供应商 = 'c') tc ON t1.商品ID = tc.商品ID JOIN (SELECT * FROM table2 WHERE 供应商 = 'd') td ON t1.商品ID = td.商品ID; |
此查询语句能够满足基本需求,但可能存在性能问题或可读性不佳的问题。欢迎各位提供更加高效和优雅的解决方案。