php - 我如何在 cakePHP 中编写带有右连接的子查询?

标签 php mysql sql cakephp cakephp-2.0

我想在 cake php 中使用 sql 的右连接编写子查询,查询如下

SELECT stkid,s.id as stk_id, s.userid as stk_userid,
       s.productid as productid, u.id as userid
FROM (select * FROM stocks as st where st.`productid` = 1) as s
  right join users as u on (u.id = s.userid)
group by u.id

请帮我解决这个问题 任何帮助或建议将不胜感激

最佳答案

首先,我不得不说你的 SQL 查询没有优化:你的 FROM 子查询没有用。

看看:

SELECT 
    stkid, 
    s.id AS stk_id, 
    s.userid AS stk_userid,
    s.productid AS productid, 
    u.id AS userid
FROM stocks AS s 
RIGHT JOIN users AS u 
    ON u.id = s.userid
WHERE s.productid = 1
GROUP BY u.id

直接SQL

“我只想要这个 sql 的答案”,简单的方法是这样的(在 Controller 中):

    // get the DB link
$pdo = $this->ModelOfThisController->getDataSource()->getConnection();

$sql = "SELECT 
            stkid, 
            s.id AS stk_id, 
            s.userid AS stk_userid,
            s.productid AS productid, 
            u.id AS userid
        FROM (
            SELECT * 
            FROM stocks AS st 
            WHERE st.`productid` = 1
            ) AS s
        RIGHT JOIN users AS u 
            ON (u.id = s.userid)
        GROUP BY u.id
    ";


$req = $pdo->prepare($sql);
$req->execute(array(
    // ':param1' => $param1,
    // ':param2' => $param2,
    ));

$data = $req->fetch(PDO::FETCH_ASSOC);
    // ...

ORM

另一种方式是with cakePHP ORM但我认为您不能将 FROM 更改为模型表名称以外的任何其他内容...

关于php - 我如何在 cakePHP 中编写带有右连接的子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33873463/

相关文章:

mysql - 产品/选项/Exras 表的审核日志记录?

php - 使用 php 发送 IMAP 命令

javascript - 仍在尝试了解 mysql 到 json 数据

php - Laravel Eloquent 相当于 QueryBuilder 查询

mysql - 如何编写存储过程在多个表中插入值

php - 在查询中使用 LIKE 子句

mysql - 根据加入日期计算员工的下一个 3 周年纪念日

mysql - 在选择子查询中使用 AVG 结果

sql - 如何在 Postgres 中对 json 数据进行计算

php - 如何检查 RTMP 直播流是打开还是关闭