Php sql-从2个表中选择数据
我有两张桌子-聊天主题和聊天回复 我想选择所有聊天室主题字段+聊天室回复中最接近当前日期的字段createDate(时间戳) chats_回复包含连接表之间的字段CHATIDPhp sql-从2个表中选择数据,php,sql,Php,Sql,我有两张桌子-聊天主题和聊天回复 我想选择所有聊天室主题字段+聊天室回复中最接近当前日期的字段createDate(时间戳) chats_回复包含连接表之间的字段CHATID $sql = "SELECT * FROM `chats_topics` AS topics, `chats_replies` AS replies WHERE (".$search.") AND (topics.id = replies.chatID) A
$sql = "SELECT *
FROM `chats_topics` AS topics, `chats_replies` AS replies
WHERE (".$search.") AND
(topics.id = replies.chatID) AND
(XXXX)
ORDER BY topics.createDate DESC";
在实时代码中使用SELECT*是一种不好的做法,我会这样做
SELECT topics.Field1, topics.Field2, MAX(replies.createDate) createDate
FROM `chats_topics` AS topics
LEFT JOIN `chats_replies` AS replies
ON topics.id = replies.chatID
WHERE (".$search.")
AND (topics.id = replies.chatID)
AND (XXXX)
GROUP BY topics.Field1, topics.Field2
ORDER BY topics.createDate DESC
添加您需要选择的字段,并将其添加到group by中。在实时代码中使用select*是一种不好的做法,我会这样做
SELECT topics.Field1, topics.Field2, MAX(replies.createDate) createDate
FROM `chats_topics` AS topics
LEFT JOIN `chats_replies` AS replies
ON topics.id = replies.chatID
WHERE (".$search.")
AND (topics.id = replies.chatID)
AND (XXXX)
GROUP BY topics.Field1, topics.Field2
ORDER BY topics.createDate DESC
添加您需要选择的字段,并将它们添加到group by中。Rich Benner为您提供了一个很好的join语句来解决这个特殊问题。我想跟进并附上一张我在发表join声明时发现有用的图片,希望它将来可能会有所帮助。我不记得我从哪里得到这张照片(尽管你可以在底部看到版权)
Rich Benner为这个特殊问题提供了一个很好的join语句。我想跟进并附上一张我在发表join声明时发现有用的图片,希望它将来可能会有所帮助。我不记得我从哪里得到这张照片(尽管你可以在底部看到版权)
谢谢。第一件事-如果我对同一个聊天有两个回复,我会得到两次结果…除非聊天主题中有重复的数据,否则这种情况不应该发生。你肯定是在用MAX和一组人?谢谢。第一件事-如果我对同一个聊天有两个回复,我会得到两次结果…除非聊天主题中有重复的数据,否则这种情况不应该发生。你肯定是在用MAX和一个组员?