首页 > 解决方案 > 如何在 PHP/MySQL 中通过外键获取所有值?

问题描述

我正在做一个电子商务项目。我这里有 3 张桌子sizesproducts而且product_sizes

sizes表如下:

uid | size
----------
1   | S
2   | M
3   | L

product_sizes表如下:

product_uid | size_uid
----------------------
1           | 2
1           | 3
2           | 1
2           | 2

我想要做的是,product_uid从表中检索所有尺寸,这是外键products,这是我正在使用的代码,

    $get_sizes = "SELECT * FROM product_sizes WHERE product_uid IN($pro_id)";
    $run_sizes = mysqli_query($conn, $get_sizes);

    while($row_sizes = mysqli_fetch_assoc($run_sizes)){

        $sizes[] = $row_sizes['size_uid'];
        $sizesAll = implode(", ", $sizes);

    }

对于第一个产品,我正确获取了值,但对于第二个产品,它结合了数据。

例如,如果产品 1 有尺寸1,3,而产品 2有尺寸,2,3那么它会1,3,2,3针对产品 2 显示。

任何帮助将不胜感激,谢谢!

标签: mysql

解决方案


我会GROUP_CONCAT在这里使用:

SELECT
    ps.product_uid,
    GROUP_CONCAT(s.size ORDER BY s.uid) sizes
FROM product_sizes ps
LEFT JOIN sizes s
    ON s.uid = ps.size_uid
GROUP BY
    ps.product_uid;

下面演示链接的屏幕截图

演示

请注意,我没有添加任何 PHP 代码,您的主要问题/问题似乎是围绕 SQL 本身解决的,而不是如何从 PHP 中使用 SQL。


推荐阅读