简体   繁体   English

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

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

Like this my query is working fine:像这样我的查询工作正常:

$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";
}

But when I add a subselection then I get a blank page:但是当我添加一个子选择时,我会得到一个空白页面:

$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";
}

What did I do wrong?我做错了什么?

You can use INNER JOIN to have both tables.您可以使用 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";
}

Try this query beacuse this query will return all the projects that have an animal associated in table animals.尝试此查询,因为此查询将返回在表动物中关联动物的所有项目。

I think is this that you want我想这是你想要的

Found this solution:找到了这个解决方案:

$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