SQL内部连接限制结果在哪里ID独特和日期大多数最近
我是新来的SQL和工作的SELECT语句,应该返回一个表结果如下文档。目标是针对存在的每个ThreadID返回一个表,并且具有匹配被查询的CatID的CatID,然后筛选结果/限制结果,以便只返回最近的帖子并返回基于排序结果的创建日期:SQL内部连接限制结果在哪里ID独特和日期大多数最近
日期创建日期修改,以使其更明显我希望每个可能的行返回的最新日期(最新的日期其中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`
)
以下应该工作,假设关于表的定义我的猜测是正确的
SELECT
ma_Threads.CatID,
ma_Threads.ID AS ThreadID,
ma_Threads.ThreadTitle,
ma_Posts.ID AS PostID,
ma_Posts.LastUpdated
FROM ma_Threads
JOIN ma_Posts ON (
ma_Posts.ID = (
SELECT MAX(ma_Posts2.ID)
FROM ma_Posts ma_Posts2
WHERE ma_Posts2.ThreadID = ma_Threads.ID
)
)
WHERE ma_Threads.CatID = '$catID'
ORDER BY ma_Posts.LastUpdated DESC
它不工作:(LastCreated应该是DateAdded。数据来自两个表,这两个表都有ThreadID,PostID,CatID,我需要获得标题 – Chezshire
对不起,添加评论 - 我正在进行编辑,并遇到了我不知道存在的五分钟限制。---错误内容如下:'查询错误(1064):'WHERE ma_Threads.CatID'= 1'ORDER BY ma_Posts附近的语法错误。 DateCreated DESC'在第16行' - 我试图运行它没有DESC,仍然得到了错误。我改变了LastCreated应该是DateCreated当我跑,因为这是我想参考的表 – Chezshire
不幸的是,它没有工作。错误:查询错误(1054):'字段列表'中的未知列'ma_Threads.ID'。我试图修改它改变马_Threads.ThreadID但这并不适用于我 – Chezshire
很难说没有看到你的表。但我最好的猜测是:
SELECT mat.ThreadTitle,
mat.CatID,
map.DateCreated AS "RecentID",
map.ThreadID,
MAX(map.LastUpdated)
FROM ma_Threads AS mat
INNER JOIN ma_Posts AS map
ON mat.CatID = map.CatID
GROUP BY mat.ThreadTitle, mat.CatID, map.DateCreated, map.ThreadID
请问您可以提供ddl表吗?有什么共同的列,你应该在联合使用? – Alex
strtolower($ thread-> title); –
我们需要查看表ma_Threads和ma_Posts的定义来调试SQL。请加上问题。 – Nic3500