【问题标题】:Left Join query returning wrong row id with correct priceLeft Join 查询以正确的价格返回错误的行 id
【发布时间】:2016-03-15 08:39:06
【问题描述】:

我正在尝试使用category_id 的左连接查询来获取最低价格。查询返回正确的price 但不同的product_id

我有两张表,一张是product,另一张是product_to_category(用于关系)。我正在尝试使用以下查询获取最低价格的product_idprice

SELECT p.product_id, MIN(p.`price`) FROM oc_product_to_category AS pc 
LEFT JOIN oc_product AS p ON pc.`product_id`=p.`product_id` WHERE pc.`category_id` = 59 

但上面的查询给了我错误的结果,因为category_id=59 包含三个product_id 67, 68, 7167 有价格87115 价格所以根据MIN() 它应该返回包含最低price 和相同product_id 的行但上面的查询给了我不同product_id 的最低价格71。我还附上了您可以轻松理解的表格和结果屏幕截图。 表 oc_product_to_category

表 oc_product

查询结果

谁能告诉我我哪里错了。我会感激的。谢谢

【问题讨论】:

  • 您在价格上使用了 MIN 函数,这将为您提供正确的价格,但 product_id 将是随机的。
  • @KiwiJuicer 准确查询给我正确的价格但product_id 不正确我想显示同一行product_id
  • GROUP BY p.product_id?
  • 是的,我也考虑使用 group by p.product_id 它会给出正确的答案。

标签: php mysql


【解决方案1】:

MIN 不会那样工作。你可以试试ORDER & 'LIMIT'。试一试——

SELECT p.product_id, p.`price` 
FROM oc_product_to_category AS pc 
LEFT JOIN oc_product AS p ON pc.`product_id`=p.`product_id` 
WHERE pc.`category_id` = 59
ORDER BY p.`price` ASC
LIMIT 1

【讨论】:

  • 它的工作谢谢。我想知道如果我有类似8 和 8.10 这样的价格,您的查询会起作用吗?
  • 那你得把LIMIT改成2
  • 我的意思是如果我有两个价格88.10 那么您的查询将显示8.10 对吗?感谢您的帮助
猜你喜欢
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
相关资源
最近更新 更多