【发布时间】:2010-03-15 12:31:00
【问题描述】:
我有一个 MySql 数据库。 罢工>
有一个包含产品和订单的表格,其中 结构:
- 产品:product_id、name、manufacturers_id
- 订单:orders_id、product_id、数量
现在我想获得所有订单(仅显示产品制造商 ID=1 的产品)。 我试过了:
SELECT
orders.orders_id,
orders.product_id
FROM products, orders
WHERE products.manufacturers_id = 1
GROUP BY orders_id
ORDER BY orders_id
但这不起作用。怎么了?
抱歉编辑:其他人编辑了我的帖子结尾删除了问题的基本部分
编辑
为了澄清我的问题,我添加了一些新信息:
我有一个带有 MyISAM 表的 MySQL 数据库。两个相关的表是:
- orders_products:orders_products_id、orders_id、product_id、product_name、product_price、product_name、product_model、final_price,...
- 产品:products_id、manufacturers_id、...
(有关表格的完整信息,请参阅产品截图 (Screenshot) 和订单产品截图 (Screenshot))
现在我想要的是: - 获取所有订购了manufacturers_id = 1产品的订单。以及该订单产品的产品名称(manufacturers_id = 1)。按订单分组。
到目前为止我所做的是:
SELECT
op.orders_id,
p.products_id,
op.products_name,
op.products_price,
op.products_quantity
FROM orders_products op , products p
INNER JOIN products
ON op.products_id = p.products_id
WHERE p.manufacturers_id = 1 AND
p.orders_id > 10000
p.orders_id > 10000 用于测试仅获得几个 order_id。 但是这个查询即使有效也需要很长时间才能执行。 两次sql server卡住了。 错误在哪里?
由于对我的编辑感到困惑,我打开了一个新的更易于理解的帖子: SQL Inner Join : DB stuck
【问题讨论】:
-
您说的是“product_id=1,但您的查询中显示的是 Manufacturer_id = 1...需要澄清哪个是正确的
-
您遇到什么错误?在您的代码中,您在 where 子句中使用 Manufacturer_id = 1 而不是 product_id = 1。这是印刷错误吗,因为您在问题中声明您想通过 product_id = 1 来限制?
-
对帖子中的错误深表歉意。我想要所有产品的订单 products.manufacturers_id =1 。但是manufacturers_id在产品表中
-
@SurfingCat:我的回答没有回答你的问题吗?