多表联查求助:根据ProductOptionID查询订单相关信息
解决方案:根据ProductOptionID查询关联订单信息
直接通过多表关联+DISTINCT去重即可解决问题,完整SQL语句如下:
SELECT DISTINCT o.OrderID, o.SurName, o.DeliveryDate FROM Orders o JOIN CustomerProductSizesOptions cpos ON o.OrderID = cpos.OrderID JOIN ProductSizesOptions pos ON cpos.ProductOptionSizeID = pos.ProductOptionSizeID WHERE pos.ProductOptionID = 1627;
逻辑说明
- 表关联逻辑:
Orders与CustomerProductSizesOptions通过OrderID关联,获取订单对应的产品规格选项记录CustomerProductSizesOptions与ProductSizesOptions通过ProductOptionSizeID关联,筛选出目标ProductOptionID对应的订单
DISTINCT的必要性:
一个订单可能在CustomerProductSizesOptions表中存在多条记录(比如示例里的OrderID=43),DISTINCT能确保最终结果里每个订单仅显示一次,避免重复数据。
测试结果验证
针对提供的示例数据,当ProductOptionID=1627时,查询结果为:
| OrderID | SurName | DeliveryDate |
|---|---|---|
| 45 | Jones | 01/01/2025 |
内容的提问来源于stack exchange,提问作者Simon Taylor
相关产品推荐
相关产品推荐

