Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sql-从2个表中选择数据_Php_Sql - Fatal编程技术网

Php sql-从2个表中选择数据

Php 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

我有两张桌子-聊天主题和聊天回复

我想选择所有聊天室主题字段+聊天室回复中最接近当前日期的字段createDate(时间戳)

chats_回复包含连接表之间的字段CHATID

$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和一个组员?