【发布时间】:2019-01-25 16:10:47
【问题描述】:
我有两张桌子:
products
+----+--------+
| id | name |
+----+--------+
| 1 | Orange |
| 2 | Juice |
| 3 | Fance |
+----+--------+
reviews
+----+------------+-------+------------+
| id | created_at | price | product_id |
+----+------------+-------+------------+
| 1 | 12/12/20 | 2 | 1 |
| 2 | 12/14/20 | 4 | 1 |
| 3 | 12/15/20 | 5 | 2 |
+----+------------+-------+------------+
我如何获得按最近(max created_at)评论价格订购的产品列表?
+------------+--------+-----------+-------+
| product_id | name | review_id | price |
+------------+--------+-----------+-------+
| 2 | Juice | 3 | 5 |
| 1 | Orance | 2 | 4 |
| 3 | Fance | | |
+------------+--------+-----------+-------+
我使用最新的 PostgreSQL。
【问题讨论】:
-
您的问题到底是什么?请出示您的查询。你被困在哪里了?
-
我不明白:你是按产品订购,价格订购日期(这是什么日期格式?mm/dd/yy?)
-
@S-Man:数据库中的日期没有格式(除非它被不恰当地存储为字符串或整数)。
-
啊,好吧。是的,显然是美国的:mm/dd/yy。结果的顺序是按价格降序排列(“按价格排序的产品列表”)。
-
好的。您想要
products的所有行。你当然知道该怎么做。您还应该了解外部连接。您想要每个产品的最新评论。那是具有最大日期或不存在较新评论的那个。您可以使用子查询DISTINCT ON、ROW_NUMBER()。你应该能够想出something。
标签: sql ruby-on-rails database postgresql ruby-on-rails-5