mysql加入多对多关系

标签 mysql join

我正在尝试学习 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/

相关文章:

mysql - MySQL建表失败

PHP - 如何发送电子邮件到 MYSQL 上的地址?

mysql - Join 未按预期填充对象图

sql - 一条语句中有两个选择语句

mysql - 与右表 mysql 中的空行进行左连接

php - 转换为 JSON 数组,其中包含 3 个表中的数据

php - php代码中的mysql语法错误

mysql - 按正确顺序删除/更新/插入数据 MSSQL -> MySQL

MySQL - 不同表的不同引擎

MySQL 多个连接到同一个表