2010-03-15 47 views
0

我有一个MySql数据库。 SQL SELECT加入?

有产品和订单的 结构的表:

  • 产品:PRODUCT_ID,名称,manufacturers_id
  • 订单:orders_id,PRODUCT_ID,数量现在

我想要获得所有订单(仅显示产品manufacturer_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 

但是这不起作用。怎么了?

Sry基因编辑:别人编辑我的支柱端删除的问题的essentiell部分

编辑

为了澄清我的问题,我增加了一些新的信息:

我有一个MySQL的DB与MyISAM表。这两个相关的表是:

  • orders_products:orders_products_id,orders_id,PRODUCT_ID,PRODUCT_NAME,PRODUCT_PRICE,PRODUCT_NAME,product_model,final_price,...
  • 产品:products_id,manufacturers_id,...

(有关表格的完整信息见截图的产品(Screenshot)和截图orders_products(Screenshot))

现在我想是这样的: - 获取所有订购产品与manufacturer_id = 1的订单。以及此订单的产品的产品名称(与manufacturer_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

+0

您使用的是什么RDBMS? – 2010-03-15 12:35:29

+2

它顶部是“MySQL”。 – 2010-03-15 12:36:07

+0

您说“product_id = 1,但是您的查询显示manufacturer_id = 1 ...需要澄清哪一个是正确的 – 2010-03-15 12:46:04

回答

2

应该这样做!

SELECT 
*.orders 
FROM orders INNER JOIN products 
ON orders.product_id = products.product_id 
WHERE products.manufacturers_id =1 
ORDER BY orders_id 
+0

我完全看不到你从哪里得到“AND products.manufacturers_id = 38”,从 – 2010-03-15 12:41:22

+0

LOL,用户更新它,它曾经是38只几分钟前,我刚刚更新了我的相关内容,因为它现在看起来不正确:-) – 2010-03-15 12:45:19

+0

太棒了,我使用编辑:形式当我更新我的问题,使这种事情更合理。 – 2010-03-15 12:50:26

1

最简单的方法是:

SELECT * FROM Orders WHERE product_id = 1 
+0

+1:对于给定的查询语句,连接是不必要的。很显然,如果产出需要制造商或某些东西,那么就需要加入 - 但并非如此。 – 2010-03-15 12:49:03

+0

我需要所有产品和订单ID在哪里products.manufacturers_id = 1 – SurfingCat 2010-03-15 12:54:23

+0

@SurfingCat,好的,但这不是你原来的问题说的;-) – 2010-03-15 12:56:21

0

WHERE products.manufacturers_id = 1 AND products.product_id = orders.product_id

,如果你想加入这两个表这就是。除此之外,您还请求product_od而不是product_id

+0

od和id现在已修复...在该职位 – SurfingCat 2010-03-15 12:47:16