【发布时间】:2013-05-26 07:29:20
【问题描述】:
我有与the one solved here 类似的问题,但当我尝试解决方案时,我认为它失败了,因为我的设置不同..
我有一个文档表... (不幸的是,由于是旧系统,无法编辑表格)
+-------+--------+----------+--------+
| Docid | title | revision | linkid |
+-------+--------+----------+--------+
| 1 | docone | 1 | 1 |
| 2 | doctwo | 1 | 2 |
| 3 | docone | 2 | 1 |
|4 | docone | 3 | 1 |
+-------+--------+----------+--------+
在列出所有文档的页面上,我只想列出每个文档的最新版本。例如 Doc1 在修订版 3 上,所以我想要那个,而不是另一个 2。Doc2 只在修订版 1 上,所以显示那个。
基于其他帖子中的问题,我将查询编写如下......
$query_docs = "
SELECT `document`.*, doctype.*
FROM `document`
INNER JOIN doctype
ON `document`.iddoctypes = doctype.iddoctypes
WHERE `document`.revision = (
SELECT MAX(`document`.revision) AS revision
FROM `document`
)
GROUP BY `document`.linkid
ORDER BY `document`.doccreation DESC";
我不得不链接到另一个表来获取文档类型(只是为了使查询更难)。
【问题讨论】:
-
如果您先尝试从文档表中获取您想要的内容,然后再担心从 doctype 中添加额外的详细信息,您可能会发现这更容易。
-
这只是将内部连接重新排序到子查询的括号之后吗?
-
不是真的;更多的是您试图解决与从
document表中获取一些数据有关的问题。我建议您专注于这一点,在您弄清楚如何从document表中获取您想要的数据之前,不要担心为额外的数据添加额外的表。
标签: php sql web-applications