You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何查询3个MTM关联表以获取正确的产品-规格-价格组合

问题描述

我正在网站上搭建产品菜单,其中产品可对应不同规格与价格。我已将表设计为符合3FN规范:一张产品名称表、一张产品规格表、一张产品价格表。这么拆分的原因是每个产品会有不同的规格和定价,但部分不同规格的产品售价可能一致。为了关联这些表,我创建了3张多对多关联表:产品与规格关联表、产品与价格关联表、价格与规格关联表。现在我需要一次性查询所有表,正确拉取每一组产品-规格-价格组合,之后传入PHP页面作为菜单的一部分展示。目前我已经实现了两张表的关联查询,但是需要关联3张表的信息,现有代码如下:

  1. 名称-规格关联查询代码:
SELECT P.product_name, S.product_size
FROM ebdb.Products AS P
    INNER JOIN ebdb.Prod_Size_Combo AS PS
        ON P.product_id = PS.product_id
    INNER JOIN ebdb.Product_Sizes AS S
        ON PS.size_id = S.size_id
ORDER BY P.product_id ASC, S.size_id ASC
  1. 名称-价格关联查询代码:
SELECT P.product_name, I.product_price
FROM ebdb.Product_Prices AS I
    INNER JOIN ebdb.Prod_Price_Combo AS PP
        ON I.price_id = PP.price_id
    INNER JOIN ebdb.Products AS P
        ON P.product_id = PP.product_id
ORDER BY P.product_id ASC, I.price_id ASC
  1. 价格-规格关联查询代码:
SELECT I.product_price, S.product_size
FROM ebdb.Product_Sizes AS S
    INNER JOIN ebdb.Price_Size_Combo AS SI
        ON S.size_id = SI.size_id
    INNER JOIN ebdb.Product_Prices AS I
        ON I.price_id = SI.price_id
ORDER BY S.size_id ASC, I.price_id ASC

请问我需要编写怎样的查询语句才能正确获取产品名称、产品规格、产品价格三列信息?最终查询结果总共有12条记录。


解决方案

最终查询语句

SELECT P.product_name, S.product_size, I.product_price
FROM ebdb.Products AS P
-- 关联产品与规格的对应关系
INNER JOIN ebdb.Prod_Size_Combo AS PS
    ON P.product_id = PS.product_id
INNER JOIN ebdb.Product_Sizes AS S
    ON PS.size_id = S.size_id
-- 关联规格与价格的对应关系
INNER JOIN ebdb.Price_Size_Combo AS SI
    ON S.size_id = SI.size_id
INNER JOIN ebdb.Product_Prices AS I
    ON SI.price_id = I.price_id
-- 校验产品与价格的对应关系,避免无效组合
INNER JOIN ebdb.Prod_Price_Combo AS PP
    ON P.product_id = PP.product_id AND I.price_id = PP.price_id
ORDER BY P.product_id ASC, S.size_id ASC, I.price_id ASC

补充说明

  • 三个关联关系全部命中才会返回数据,确保拿到的都是合法的产品-规格-价格组合,不会出现冗余的错误匹配
  • 如果你的中间表存在重复关联记录,可在SELECT后添加DISTINCT关键字去重,不影响结果字段
  • 排序规则可根据前端菜单展示的实际需求调整,比如优先按价格排序等

内容的提问来源于stack exchange,提问作者ILikeLions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:45:04