【发布时间】:2017-10-18 21:45:45
【问题描述】:
我是 SQL 新手,正在处理一个 select 语句,该语句应该返回一个表结果,如下所述。目标是为每个存在的 ThreadID 返回一个表,其中每个 ThreadID 具有与被查询的 CatID 匹配的 CatID,然后过滤结果/限制结果,以便仅返回最近的帖子并返回基于排序的结果创建日期:
修改创建日期以使我希望从每个可能的行返回的日期更明显(Most RecentDate where CatID=1)如果数据存在于一个表中,我认为我可以写这个,但这显然超出了我的理解.
╔══════════╔══════════╦═══════════════╦════════╦═════════════╗
║ CatID ║ ThreadID ║ ThreadTitle ║ PostID ║ DateCreated ║
╠══════════╬══════════╬═══════════════╬════════╬═════════════╣
║ 4 ║ 7 ║ Title A ║ 12 ║ most recent ║
║ 4 ║ 6 ║ Title B ║ 6 ║ most recent ║
║ 4 ║ 12 ║ Title C ║ 45 ║ most recent ║
║ 4 ║ 3 ║ Title D ║ 2 ║ most recent ║
╚══════════╩══════════╩═══════════════╩════════╩═════════════╝
我一直在阅读 PHPfreaks、W3schools,显然是 StackOverflow,并尝试使用 Adminer 对我的结果进行建模。我已经了解了一些我以前没有尝试过的连接,但经过几个小时的尝试(6 小时)后,我觉得寻求帮助很舒服。
我的尝试要么没有找到任何结果、1 个结果或 8000+ 个结果。我的实际测试数据应该有 4 个结果。
这是我最近尝试的 sql,它没有按预期工作
SELECT
mat.ThreadTitle,
mat.CatID,
map.DateCreated AS "RecentID",
map.ThreadID,
map.LastUpdated
FROM
ma_Threads AS mat
INNER JOIN
ma_Posts AS map
ON mat.CatID = '$catID'
WHERE `pat.DateCreated(test.marvelchampions)` = (
SELECT MAX(DATE(pat.DateCreated))
FROM `pat`
)
【问题讨论】:
-
您能提供表格的ddl吗?是否有任何您应该在连接中使用的常用列?
-
strtolower($thread->title);
-
我们需要查看ma_Threads和ma_Posts表的定义来调试SQL。请添加到问题中。
-
ma_Threads AS mat INNER JOIN ma_Posts AS map ON mat.CatID = '$catID'应该有其他的东西,比如AND mat.CatID=map.CatID(或者它们有共同的列)。你必须告诉它这两个表是如何相互关联的。否则,您将获得比预期更多的记录。 -
您必须向我们展示每个表中的列。那么它应该很容易