我想在 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/