mysql显示商店最便宜的产品价格
Posted
技术标签:
【中文标题】mysql显示商店最便宜的产品价格【英文标题】:mysql show cheapest product price from store 【发布时间】:2019-01-17 21:33:50 【问题描述】:我有表格支票,我在其中插入支票。 有些来自同一家商店,产品和价格重复。
所以我想查询哪个商店价格最便宜的产品。
我的mysql表:
+----------+---------------------+-----------+-----------------+-----------+
| ID | Product_Name | price | discount_price | store_id |
+----------+---------------------+-----------+-----------------+-----------+
| 1 | Banana 200g | 1.25 | 0 | 1 |
| 2 | Red bull 0.5l | 2.20 | 1.90 | 1 |
| 3 | Red bull 0.5l | 2.20 | 1.90 | 1 |
| 4 | Banana 300g | 1.50 | 0 | 2 |
| 5 | Red bull 0.5l | 2 | 0 | 2 |
+----------+---------------------+-----------+--------------+--------------+
第二个问题如何计算或查询1kg的价格?或者如果 1 公斤香蕉价格是 5 美元,而你买了 0.200 克,那么它会通过查询来计算还是应该使用 php 来计算?
【问题讨论】:
MySQL - Fetching lowest value的可能重复 这会很复杂,因为这些值不是分开的......你不能改变数据放入数据库的方式吗? (将“香蕉”与“200g”分开) @Jeff 那么我必须如何分隔表格?我通过支票将产品放入数据库,我有杂货店检查并将所有产品和价格提交到数据库。但我必须创建不同的表? PHP 代码在哪里?它是否相关? 我不知道该怎么做,查询所有数据或可能用 php 来做这一切。 @Dharman 【参考方案1】:这并不能回答问题,我知道。 它仅显示了一个表结构示例,该示例将使您的问题(以及您的问题)更容易解决。因为你要求它。
Products
+----+--------+-----------+
| id | name | brand |
+----+--------+-----------+
| 1 | banana | chicita |
+----+--------+-----------+
| 2 | banana | fairtrade |
+----+--------+-----------+
Prices
+---------+-------+----------+------+-------+
| product | store | quantity | unit | price |
+---------+-------+----------+------+-------+
| 1 | 2 | 200 | g | 0,60 |
+---------+-------+----------+------+-------+
| 1 | 56 | 1 | kg | 1,20 |
+---------+-------+----------+------+-------+
| 2 | 56 | 0,5 | kg | 1,00 |
+---------+-------+----------+------+-------+
Units (should have an id, too. Made for readability here)
+------+-------------+----------+--------+-----------+
| unit | factor | unitgroup| locale | isDefault |
+------+-------------+----------+--------+-----------+
| g | 1 | weight | europe | true |
+------+-------------+----------+--------+-----------+
| kg | 0,01 | weight | europe | false |
+------+-------------+----------+--------+-----------+
| ml | 0,001 | volume | europe | false |
+------+-------------+----------+--------+-----------+
| dl | 0,1 | volume | europe | false |
+------+-------------+----------+--------+-----------+
| l | 1 | volume | europe | true |
+------+-------------+----------+--------+-----------+
| m | 1 | distance | europe | true |
+------+-------------+----------+--------+-----------+
| km | 0,001 | distance | europe | false |
+------+-------------+----------+--------+-----------+
| mile | 0,000621371 | distance | us | false |
+------+-------------+----------+--------+-----------+
使用类似的结构,您可以在一个带有一些左连接、一个 MIN() 和其中的一些计算的 sql 查询中找到最低价格。
【讨论】:
请注意 group 是一个保留字,因此对于表/列标识符来说是一个糟糕的选择 @Strawberry 是的,我会改的! @Jeff 为什么使用列“isDefualt”我可以做什么或我必须对该列做什么? 使用“isDefault”列,您的应用程序将知道它应该显示为标准的单位,并且您会知道必须计算价格的单位。只是一个建议。您还可以在产品表中有一个“单位”列,以便香蕉以 g 显示/显示,mellons 以 kg 显示/显示。所有这些都只是输出的预设。以上是关于mysql显示商店最便宜的产品价格的主要内容,如果未能解决你的问题,请参考以下文章
用 WooCommerce 3 中选择的变化价格替换可变价格范围