我正在尝试学习 mysql 中多对多关系的连接, 我有四个表:
customers, orders, products, payments
我正在尝试获取记录:
customer_name, order_status, pay_method, pro_name
我使用的查询:
SELECT cust_name,order_status,pay_method,pro_name FROM customer
INNER JOIN orders ON customer.cust_id = orders.cust_id
INNER JOIN payments ON payments.order_id = orders.order_id
INNER JOIN products ON products.pro_id = orders.pro_id
我收到了我想要的结果,没有任何问题。但是这个查询只显示一个订单的一个产品,然后我意识到我应该有另一个单独的表,它可以容纳一个订单的许多产品。在这个问题上我无法得到想要的结果
最佳答案
目前还不完全清楚您在问什么,但我猜您想要做的是创建一个链接订单和产品的多对多表?在这种情况下,您可以只创建一个名为“productorders”的表,其中将包含一个 order_id 和一个 pro_id。然后你会像这样修改你的查询:
SELECT cust_name,order_status,pay_method,pro_name FROM customer
INNER JOIN orders ON customer.cust_id = orders.cust_id
INNER JOIN payments ON payments.order_id = orders.order_id
INNER JOIN productorders ON productorders.order_id = orders.order_id
INNER JOIN products ON products.pro_id = productorders.pro_id;
加入productorders会得到一个订单关联的所有产品,再加入products会得到每个产品关联的信息。
关于mysql加入多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32215308/