gpt4 book ai didi

php - MYSQL JOIN 有条件地根据逗号分隔列表检查整数

转载 作者:行者123 更新时间:2023-11-30 01:25:55 26 4
gpt4 key购买 nike

我有一个 SQL SELECT 语句,其中使用了 3 个表。我正在使用 INNER JOIN 来连接表,但是我遇到了一些问题,因为我希望连接条件所基于的两列是不同的数据类型;一个是整数 - 产品表的 id,可以在下面看到为 p.id。另一个是订单表中这些 id 的逗号分隔字符串。客户可以一次订购多个产品,因此产品 ID 存储为逗号分隔列表。

这是我使用 SQL 的进展情况:

"SELECT o.transaction_id, o.payment_status, o.payment_amount, o.product_id, o.currency, o.payment_method, o.payment_time, u.first_name, u.last_name, u.email, p.title, p.description, p.price
FROM orders AS o
INNER JOIN products AS p ON ( NEED HELP HERE--> p.id IN o.product_id comma delimited list)
INNER JOIN users AS u ON ( o.user_id = u.id )
WHERE user_id = '39'
ORDER BY payment_time DESC
LIMIT 1";

也许我可以使用正则表达式?目前,逗号分隔列表读取为“2,1,3” - 但是字符数不受限制 - 因此我需要一个条件来检查我的产品 id (p.id) 是否在此 o.product_id 列表中?

最佳答案

您所拥有的是一对多关系的完美示例,其中您有一个订单和附加的多个项目。您应该有一个链接表,例如

order_product - 它在 orderid 和 Productid 之间建立连接,您还可以在其中放置两者之间关系的特定数据(例如添加商品的时间、数量等)

然后,您使用此表进行联接,并且到处都有相同的字段类型。

简单的例子:

select 
/* list of products */
from
order o,
order_product op,
product p
where
o.id = 20
and o.id = op.orderid
and op.productid = p.id

关于php - MYSQL JOIN 有条件地根据逗号分隔列表检查整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993911/

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