结合两个查询

时间:2013-01-10 12:04:35

标签: mysql pdo

我目前正在使用以下两个查询:

$get_forum=$this->prepare("SELECT * FROM ".TBL_PREFIX."forums WHERE id=:forum_id");
$get_forum->bindParam(":forum_id", $forum_id);
$get_forum->execute();

$forum=$get_forum->fetchAll();

$get_parent=$this->prepare("SELECT * FROM ".TBL_PREFIX."forums WHERE id=:parent_id");
$get_parent->bindParam(":parent_id", $forum["parent_id"]);
$get_parent->execute();

我想将它们组合成一个类似于此的查询,它使用绑定的参数或数据库中字段的值。在从数据库中获取论坛数据之前,我不知道父ID是什么。

父论坛的parent_id为-1,而子论坛的parent_id设置为父ID的id。

$get_forums=$this->prepare("SELECT * FROM ".TBL_PREFIX."forums WHERE id=:forum_id OR forum_id=parent_id");
$get_forums->bindParam(":forum_id", $forum_id);
$get_forums->execute();

是否可以在查询本身内部使用字段值将其与其他值进行比较?

数据库示例: http://sqlfiddle.com/#!2/2b354/1

2 个答案:

答案 0 :(得分:1)

您可以进行自我加入:

SELECT *
FROM   forums parent JOIN forums child ON parent.forum_id = child.parent_id
WHERE  parent.id = ? OR child.id = ?

答案 1 :(得分:1)

试试这个

$get_forum=$this->prepare("SELECT * FROM ".TBL_PREFIX."forums WHERE id=? OR id=?");
$get_forum->bindParam(array($forum_id,$forum["parent_id"]));
$get_forum->execute();