php - MySQL 查询返回 double

标签 php mysql sql

出于某种原因,当我运行此查询时,它会返回相同的数据两次(双倍)。数据在数据库中只存在一次。为什么返回 double ?我想不通。

注意:我是这类查询的新手,因此非常感谢任何指导。

SELECT 
             `conversations_messages`.`message_date`,
             `conversations_messages`.`message_date` > `conversations_members`.`conversation_last_view` AS `message_unread`,
             `conversations_messages`.`message_text`,
             `users`.`username`
      FROM   `conversations_messages`
      INNER JOIN `users` ON `conversations_messages`.`user_id` = `users`.`user_id`
      INNER JOIN `conversations_members` ON `conversations_messages`.`conversation_id` = `conversations_members`.`conversation_id`
      WHERE `conversations_messages`.`conversation_id` = {$conversation_id}
      ORDER BY `conversations_messages`.`message_date` DESC

..... 这是完整的功能。

function fetch_conversation_messages ($conversation_id) {
$conversation_id=(int)$conversation_id;
$sql="SELECT 
             `conversations_messages`.`message_date`,
             `conversations_messages`.`message_date` > `conversations_members`.`conversation_last_view` AS `message_unread`,
             `conversations_messages`.`message_text`,
             `users`.`username`
      FROM   `conversations_messages`
      INNER JOIN `users` ON `conversations_messages`.`user_id` = `users`.`user_id`
      INNER JOIN `conversations_members` ON `conversations_messages`.`conversation_id` = `conversations_members`.`conversation_id`
      WHERE `conversations_messages`.`conversation_id` = {$conversation_id}
      ORDER BY `conversations_messages`.`message_date` DESC";

     $result = mysqli_query($sql);
     $messages = array();

     while (($row= mysqli_fetch_assoc($result)) !== false){
       $messages[] = array(
            'date'      => $row['message_date'],
            'unread'    => $row['message_unread'],
            'text'      => $row['message_text'],
            'username'  => $row['username'],
       );
}
     return $messages;

最佳答案

您的查询正在创建 Cartesian product .我假设每条消息有两个对话成员,并且连接匹配他们两个。

关于php - MySQL 查询返回 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994427/

相关文章:

php - 显示与每个产品对应的所有图像

php - 如何使用从数据库导入的值

mysql - 如何在树结构中设置嵌套路径值?

sql - 划分一个表,使其增加到 2N 而不是 N^2?

php - mysql_query 返回错误结果

php - 插入用户ID和字段

php - 在 .htaccess 中获取 PHP session 变量

html - 为了制作出像样的应用程序,我接下来应该阅读什么? (了解 C、HTML 和 MySQL)

mysql - 如何将 SQL 查询的结果显示为自定义值?

mysql 这个条件更新语句的正确语法是什么