繁体   English   中英

如何在查询中进行子选择?

[英]How can I make a subselection in my query?

像这样我的查询工作正常:

$pdo = $db->prepare('SELECT *
    FROM projects WHERE project_id = :project_id ');  
    $pdo->execute(array('project_id' => $project_id));
    while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) {
         echo "ok";
}

但是当我添加一个子选择时,我会得到一个空白页面:

$pdo = $db->prepare('SELECT *
    (SELECT * FROM animals WHERE projects.animal=animals.id) AS animal
    FROM projects WHERE project_id = :project_id ');  
    $pdo->execute(array('project_id' => $project_id));
    while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) {
         echo "ok";
}

我做错了什么?

您可以使用 INNER JOIN 来拥有两个表。

$pdo = $db->prepare('SELECT *
FROM projects
INNER JOIN animals ON projects.animal=animals.id
WHERE project_id = :project_id ');  
$pdo->execute(array('project_id' => $project_id));
while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) {
   echo "ok";
}

尝试此查询,因为此查询将返回在表动物中关联动物的所有项目。

我想这是你想要的

找到了这个解决方案:

$pdo = $db->prepare('SELECT *
    FROM projects 
    LEFT JOIN animals ON projects.animal=animals.id
    WHERE project_id = :project_id ');  
    $pdo->execute(array('project_id' => $project_id));
    while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) {
         echo "ok";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM