mysql - 左连接在 Active Record Yii 中不显示空记录

标签 mysql sql join yii left-join

我知道这个问题可能会更早被问到,我已经应用了那里提到的修复程序,但它们不起作用。

这是我的问题:

我有两个表想要连接并获取结果。

  1. 任务(id、状态、task_type_id)
  2. 任务类型(id、任务类型名称)

task_type 与任务之间存在一对多关系。

我的要求:

我想要获取用户创建的所有任务(按其 task_type_id 分组且当前未完成)。

这是我尝试过的:

$criteria = new CDbCriteria();
    $criteria->select = "t.*, t2.task_type_id,count(t2.task_type_id) as total";
    $criteria->join = "LEFT JOIN task t2 on t.id=t2.task_type_id";
    $criteria->condition = "t.user_id=" . $user_id . " OR t.user_id is NULL";
    $criteria->addCondition("t2.user_id=" . $user_id);
    $criteria->addCondition("t2.status='Incomplete'");
    $criteria->group = "t.id";
    $criteria->order = 'total desc';
    $task_types = TaskType::model()->findAll($criteria);

它返回所有正确的内容,但不显示 task_type 表的空值。即它仅显示那些存在任务的task_type。它不显示task_type 不存在的task_type。我想要任务存在或不存在的所有任务类型。

有人可以建议修复吗?我使用了左连接,它应该返回两种类型的task_types,但它不起作用。

最佳答案

用稍后的声明更新以下内容

$criteria->condition = "t.user_id=" . $user_id . " OR t.user_id is NULL";

$criteria->condition = "COALESCE(t.user_id,1)=" . COALESCE($user_id,1). ";

关于mysql - 左连接在 Active Record Yii 中不显示空记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32245568/

相关文章:

mysql - 如何在 MySQL 中获取最后一小时的#entries,更正时区?

使用临时列的 SQL Server WHERE 子句

android - 将 RIGHT 外连接转换为左外连接 SQLite

php - 查询异常期间失去与 MySQL 服务器的连接

php - 使用 PHP 查找以字符开头的数据库行

java - 如何在没有关系的情况下连接多个表

sql - 如何在SSIS中同步两个表

mysql - 仅使用 mysql 更改表的内容

php - 内连接,选择 SUM 和Where

linux - 在 Linux 上连接两个文件