如果这看起来很简单,我要道歉,因为我的作业需要在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个小时内通过,并且我没有足够的时间进行进一步的研究,因为我还有另一个待定的作业要...]]
您只需要联接3个表-orders
,order_items
和products
:
SELECT DISTINCT products.*
FROM products
JOIN order_items USING (product_id)
JOIN orders USING (order_id)
WHERE orders.customer_id = 35
这是一条注释,因为您似乎不熟悉SQL。您需要学习查询的基本语法(这就是为什么您不满意的原因)。