簡體   English   中英

如何在cakePHP中編寫具有正確聯接的子查詢?

[英]How could I write sub-query with right join in cakePHP?

我想在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的答案”,簡單的方法是這樣(在控制器中):

    // 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

另一種方法是使用cakePHP ORM,但我認為除了模型的表名之外,您不能將FROM更改為其他任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM