MySQL查询4个不同的表

问题描述 投票:-3回答:2

如果这看起来很简单,我要道歉,因为我的作业需要在2个小时内通过,而且我没有足够的时间进行进一步的研究,因为我还有另一个待定的作业要在今晚提交。我只知道基本的MYSQL命令,而不知道这些类型。这是悬而未决的最后一个问题,即使我已经阅读过JOIN文档,也让我发疯。请帮助。

说我有4张桌子

 _______________     _______________      _______________    _______________
|   customers   |   |     orders    |    | ordered_items |  |   products    |
|_______________|   |_______________|    |_______________|  |_______________|
|(pk)customer_id|   | (pk)order_id  |    |   (pk)id      |  |(pk)product_id |
|  first_name   |   |(fk)customer_id|    | (fk)order_id  |  |     name      |
|  last_name    |   |     date      |    |(fk)product_id |  |  description  |
|   contact_no  |   |               |    |    quantity   |  |     price     |
|_______________|   |_______________|    |_______________|  |_______________|      

我将如何查询订购的所有产品(例如:customer_id ='5')

我只知道基本的SQL,例如在1个表上进行直接查询,并从2个不同的表进行联接,但是由于其4个不同的表具有彼此不同的关系,我如何才能获得按特定客户ID订购的所有产品?

因为它喜欢从order_id =(* * customer_id = 5的订单)中订购的产品中获取所有产品。

但是在执行这种类型的查询时,有什么可以作为优化的最佳实践方法呢?>

如果这看起来很简单,我会道歉,因为我的作业需要在2个小时内通过,并且我没有足够的时间进行进一步的研究,因为我还有另一个待定的作业要...]]

mysql sql
2个回答
1
投票

您只需要联接3个表-ordersorder_itemsproducts

SELECT DISTINCT products.*
FROM products
JOIN order_items USING (product_id)
JOIN orders USING (order_id)
WHERE orders.customer_id = 35

1
投票

这是一条注释,因为您似乎不熟悉SQL。您需要学习查询的基本语法(这就是为什么您不满意的原因)。

© www.soinside.com 2019 - 2024. All rights reserved.