0

と の 2 つのオプションのみを含むドロップダウン リストがありAndますOr。これら 2 つのオプションを選択すると、クエリが実行されますが、選択内容によって異なります。を選択するAndと、クエリが変更されます。私のクエリは次のようになります。

$sql = 
            "SELECT distinct n.node_id, n.path, 
               n.title_tag as node_name, 
               n2.title_tag as tree_name,
               MATCH (n.title_tag) AGAINST ('%s') as score
            FROM nodes n 
               join trees t on (n.tree_id=t.tree_id and t.status='A' and t.workspace_id=%d)
               join nodes n2 on (n2.node_id = t.tree_id)
               left join node_links nl1 on (n.node_id=nl1.from_node_id and nl1.to_node_id='%s')
               left join node_links nl2 on (n.node_id=nl2.to_node_id and nl2.from_node_id='%s')
            WHERE n.node_id!='%s' and nl1.node_link_id is null and nl2.node_link_id is null
            HAVING score > 0
            ORDER BY score DESC";

条件を追加しMATCH AGAINSTたい部分に注意してください。条件を選択するときにロジックを使用してクエリが一致し、条件を選択するときにロジックを使用してクエリが一致する場合、どうすればよいですか。どんな助けでも構いません。ありがとう。AndOrAndnode_nameANDOrnode_nameOR

4

1 に答える 1

2

AFAIUは、フロントエンドからの選択肢(に保存されている)の選択に基づいて条件を追加したい質問です。その$condition場合は、以下のコードを試してください:(テストされていません)

switch($condition) {
                case "AND" : $searchNode = "+$searchTerm"; break;
                case "OR"  : 
                default    :
                             $searchNode = "$searchTerm"; break;
}

$final_search = "$searchTitle $searchNode";

$sql = "SELECT distinct n.node_id, n.path, 
                   n.title_tag as node_name, 
                   n2.title_tag as tree_name,
                   MATCH (n.title_tag,n.node_name) 
                   AGAINST ($final_search IN BOOLEAN MODE) as score ..." ;

Reference

于 2013-09-27T19:51:46.380 に答える