【问题标题】:SQL SELECT Join?SQL SELECT 加入?
【发布时间】: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:我的回答没有回答你的问题吗?

标签: sql mysql select


【解决方案1】:

应该这样做!

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

【讨论】:

  • 我完全看不到你从哪里得到“AND products.manufacturers_id = 38”
  • 大声笑,用户更新了它。就在几分钟前,它曾经是 38 岁。我刚刚相应地更新了我的,因为它现在看起来不对:-)
  • 太好了,我在更新我的问题时使用 EDIT: 表单,让这种事情更合理。
  • 我在帖子中添加了一些信息。我认为这是正确的方法,但要放慢速度,我不知道为什么:-/
【解决方案2】:

简单的方法是:

SELECT * FROM Orders WHERE product_id = 1

【讨论】:

  • +1:对于给定的查询语句,连接是不必要的。显然,如果输出需要制造商或其他东西,那么就需要加入 - 但不是按照说明的那样。
  • 我需要所有产品和订单 ID where products.manufacturers_id = 1
  • @SurfingCat,好的,但这不是你原来的问题所说的 ;-)
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多