0

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

$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。

$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

4

2 回答 2

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();
于 2013-01-10T12:27:45.730 回答
1

您可以进行自加入:

SELECT *
FROM   forums parent JOIN forums child ON parent.forum_id = child.parent_id
WHERE  parent.id = ? OR child.id = ?
于 2013-01-10T12:13:21.067 回答