如何在 3 个 MTM 表之间查询 MySQL

How to query in MySQL between 3 MTM tables

我正在尝试在一个网站上创建一个产品菜单,其中的产品可以有不同的尺寸和价格。我想我在 3FN 中有 tables,其中有一个 table 用于产品名称,一个用于产品尺寸,一个用于产品价格。这种分离的原因(据我所知)是每个产品都有不同的尺寸和价格,但是当这些产品的尺寸不同时,有些产品会有相同的价格。对于 link 这些,我创建了 3 个 MTM tables - 产品和尺寸、产品和价格以及价格和尺寸。我现在要做的是一次查询所有 table,以便正确检索每个产品-尺寸-价格组合,然后我可以将其传递到 PHP 页面并显示结果作为菜单的一部分。您可以在下面看到我使用两个 table 部分做到这一点的地方,但我需要加入所有 3 个的信息。

Names-Sizes

相关代码:

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

Names-Prices

相关代码:

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

Prices-Sizes

相关代码:

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 列。

在咨询了我的团队后,我发现您可以拥有一个多 MTM table,您可以从中同时提取所有相关数据。参考以下型号:

Multi-MTM Table model

要从此 table 中提取相关信息,命令类似于:

SELECT P.product_name, S.product_size, I.product_price
FROM ebdb.PSI_Combo AS C
    INNER JOIN ebdb.Products AS P
        ON P.product_id = C.product_id
    INNER JOIN ebdb.Product_Prices AS I
        ON I.price_id = C.price_id
    INNER JOIN ebdb.Product_Sizes AS S
        ON S.size_id = C.size_id

结果信息将显示为: Table Results

您可以通过添加 WHERE 子句或 WHERE/AND 子句来搜索特定条目。