从mysql表中查询最低价格

时间:2013-10-24 17:03:05

标签: php mysql sql

我有两张桌子:

一个表包含不同的笔记本电脑规格

laptop:
|partNumber|picture|laptopName|laptopProcessor|visibility|
..........................................................
|AB00001   |pic1   |lenovo..  |intel core I5  |1         |
|AB00002   |pic2   |samsung   |AMD semprom 3.8|1         |

另一张桌子是一张库存表,我有一个多店铺,每家商店都有不同价格的特定笔记本电脑

inventory:
|partNumber|shopName|price|qty|
...............................
|AB00001   |shop1   |554  |2  |
|AB00002   |shop1   |356  |4  |
|AB00002   |shop3   |400  |1  |
|AB00001   |shop4   |625  |5  |
|AB00002   |shop4   |345  |3  |

我想写一个查询,列出有关笔记本电脑的最佳价格,所以我写了这个:

SELECT laptop.partNumber, laptop.picture, laptop.laptopName, laptop.laptopProcessor,
       inventory.MIN(price)
FROM laptop INNER JOIN inventory ON inventory.partNumber=laptop.partNumber
WHERE visibility="1"

所以基本上我想用最好的价格显示所有笔记本电脑,它没有价格查询工作,但我不能将这个MIN()函数添加到查询我想我错过了语法,但我不知道应该怎么做工作。请帮帮我。

3 个答案:

答案 0 :(得分:1)

试试这个:

SELECT laptop.partNumber,
  laptop.picture,
  laptop.laptopName,
  laptop.laptopProcessor,
  MIN(inventory.price)
FROM laptop
INNER JOIN inventory ON inventory.partNumber = laptop.partNumber
WHERE visibility = "1"
GROUP BY laptop.partNumber,
  laptop.picture,
  laptop.laptopName,
  laptop.laptopProcessor

答案 1 :(得分:1)

语法为MIN(column name),因此它应为MIN(inventory.price)。但您还需要添加GROUP BY子句,否则整个表格只会有一个结果。

然后,由于您想要通过笔记本电脑分组,请添加GROUP BY inventory.partNumber。如果partNumber不是laptop表的主键,则还应添加其他列。

答案 2 :(得分:1)

您缺少Group BY

SELECT laptop.partNumber, laptop.picture, laptop.laptopName, laptop.laptopProcessor,
       inventory.MIN(inventory.price)
FROM laptop INNER JOIN inventory ON inventory.partNumber=laptop.partNumber
WHERE visibility="1"
GROUP BY laptop.partNumber, laptop.picture, laptop.laptopName, laptop.laptopProcessor