php - MySQL 查询错误 12

标签 php mysql sql select in-operator

public function getAllSharedCases($uid) {
        $sql = "SELECT * FROM cases 
                INNER JOIN share_pathologist AS sp ON cases.case_id = sp.case_id 
                INNER JOIN share_group AS sg ON cases.case_id = sg.case_id 
                WHERE sp.pathologist_id = ? OR sg.group_id = (SELECT group_id FROM user_group WHERE state = ? AND user_id = ?)";
        $query = $this->db->prepare($sql);
        $query->execute(array($uid, "joined", $uid));
        if($query->rowCount()) {
            $cases = $query->fetchAll();
            for ($i = 0; $i < count($cases); $i++) {
                $shared = $this->getSharedWithGroups($cases[$i]["case_id"]);
                $cases[$i]["shared_group"] = $shared;
                $shared = $this->getSharedWithPathologists($cases[$i]["case_id"]);
                $cases[$i]["shared_pathologist"] = $shared;
            }
            return $cases;
        }
        return false;
    }

分享病理学家:

id
case_id
pathologist_id

共享组:

id
case_id
group_id

用户组:

id
user_id
group_id
state

此查询始终返回 false。

最佳答案

在子查询之前使用IN运算符而不是EQUALS TO('=')

试试这个:

public function getAllSharedCases($uid) {
        $sql = "SELECT * FROM cases 
                INNER JOIN share_pathologist AS sp ON cases.case_id = sp.case_id 
                INNER JOIN share_group AS sg ON cases.case_id = sg.case_id 
                WHERE sp.pathologist_id = ? OR sg.group_id IN (SELECT group_id FROM user_group WHERE state = ? AND user_id = ?)";
        $query = $this->db->prepare($sql);
        $query->execute(array($uid, "joined", $uid));
        if($query->rowCount()) {
            $cases = $query->fetchAll();
            for ($i = 0; $i < count($cases); $i++) {
                $shared = $this->getSharedWithGroups($cases[$i]["case_id"]);
                $cases[$i]["shared_group"] = $shared;
                $shared = $this->getSharedWithPathologists($cases[$i]["case_id"]);
                $cases[$i]["shared_pathologist"] = $shared;
            }
            return $cases;
        }
        return false;
    }

关于php - MySQL 查询错误 12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34436256/

相关文章:

php - 将 url 与字符串分开?

php - 使用 LEFT JOIN 选择 MySQL

mysql - JPA 如何构建连接条件查询

php - 从 Excel 导入数据有困难

mysql - 如何使用 3 个表的连接编写 SQL 查询?

sql - 查询 "ALTER TABLE test_posts ADD sticky boolean NOT NULL default = false"= 错误

php - 将 Doctrine 与 View 一起使用 - 生成了无效的 'id' 字段

php - 如何使用 PHP 创建自定义 CSV 文件?

sql - 我的SQL要求用户之前已成功登录一次,我该如何修改以删除该要求?

PHP - 这个 Levenshtein 距离递归算法太慢了还是我错了?