通过另一个查询结果排序查询结果(MySQL)

时间:2015-02-21 15:20:35

标签: mysql sorting

表格结构:

文件夹:

+--------------+--------------+
| Field        | Type         |
+--------------+--------------+
| id           | int(11)      |
| project_id   | int(11)      |
| finished     | int(11)      |
| approved     | int(11)      |
| comment      | varchar(500) |
+--------------+--------------+

werte:

+---------------------+---------------+
| Field               | Type          |
+---------------------+---------------+
| id                  | int(11)       |
| folder_id           | int(11)       |
| form_id             | int(11)       |
| werte               | varchar(5000) |
| number              | int(11)       |
+---------------------+---------------+

现在我有一种情况,我想按特定顺序从文件夹中检索id字段。我需要的前几个排序很容易实现,因为顺序由表中的字段决定。例如

SELECT id FROM folders ORDER BY approved ASC;

为了使它不那么抽象,werte表保存参数值,就像本例中的日期一样。文件夹可以包含多个表单,而这些表单又包含多个werte。

我的问题是:我想从文件夹表中获取所有ID,按werte中存储的每个id的最新日期排序(每个id在大多数情况下将包含多个相关的werte记录)。

从某个文件夹获取最新日期的有效查询将是

SELECT MAX(STR_TO_DATE(werte, '%d.%m.%Y')) FROM werte WHERE number = 2 AND folder_id = 42;

如何通过第二个查询的结果对第一个查询进行排序?


编辑:

另一个问题的问题是另一个问题。解决方案,

SELECT f.id FROM folders f JOIN werte w ON w.folder_id = f.id WHERE w.number = 2 ORDER BY STR_TO_DATE(werte, '%d.%m.%Y');

将在表格中生成所有日期。但是,我只想从每个id获得一个结果(最新的一个)。每个文件夹都有多个包含日期的 werte 条目,我只希望按每个相应的最大日期排序ID。对于透视图,上面的查询产生大约8000个结果,但表中只有大约1900个不同的ID。

0 个答案:

没有答案