我正在尝试在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
我正在收到我想要的结果,没有任何问题。但是这个查询只显示一个产品对一个订单,然后我意识到我应该有另一个单独的表,它将针对一个订单持有许多产品。在这个问题上,我无法得到理想的结果
答案 0 :(得分:1)
您并不完全清楚自己要问的是什么,但我猜测您尝试做的是创建一个链接订单和产品的多对多表格?在这种情况下,您只需创建一个名为" 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;
加入生产商将获得与订单相关的所有产品,然后加入产品将获得与每种产品相关的信息。