0

現在、次の2つのクエリを使用しています。

$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();

それらを1つのクエリに結合して、バインドされたパラメータまたはデータベースのフィールドの値を使用するようなものにしたいと思います。データベースからフォーラムデータを取得するまで、親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

自己参加することができます:

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 に答える
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 に答える