gpt4 book ai didi

mysql - 三张表的sql左外连接

转载 作者:行者123 更新时间:2023-12-04 02:41:39 25 4
gpt4 key购买 nike

我正在开发一个电子商务应用程序。应用程序有两个页面(所有产品和我的购物车)经过身份验证的用户可以将产品添加到自己的购物车。我有三个表,这些表包含以下数据。我想如果用户将产品添加到自己的购物车,这些产品不存在于该用户的所有产品页面上。

应该如何SQL查询?我正在寻找所有产品页面的查询。所以查询的返回类型必须是产品。

If user added any products to own basket on all product page these products shouldn't see on the all product page for this user.

PRODUCT TABLE    
+-------+--------+
| id | name |
+-------+--------+
| 1 | p1 |
| 2 | p2 |
+-------+--------+

USER TABLE
+-------+--------+
| id | name |
+-------+--------+
| 3 | U1 |
| 4 | U2 |
+-------+--------+

BASKET TABLE
+-------+---------+-------------+
| id | fk_user | fk_product |
+-------+---------+-------------+
| 5 | 3 | 1 |
| 6 | 4 | 2 |
+-------+---------+-------------+

因此,如果经过身份验证的用户的 ID 是 3。用户应该在自己的所有产品页面上看到 p2 产品。

最佳答案

试试这个:

SELECT product.name
FROM product
LEFT JOIN basket ON basket.fk_product = product.id
WHERE (basket.fk_user != 3 OR basket.fk_user IS NULL)

查看我的 demo query

如果你愿意,你也可以加入 user 表,但是你给我的数据不是必需的。

当 on 子句的计算结果为 true 时,left join 保留第一个(产品)表中的所有行以及第二个(购物车)表中的所有行。

当 on 子句的计算结果为 falseNULL 时,left join 仍将第一个表中的所有行保留为 NULL 第二个表的值。

关于mysql - 三张表的sql左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59101300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com