0

免責事項:単一のWHEREステートメントにANDおよびOR演算子を追加することが可能であることを私は知っています、そしてこれは一般的にそれを行うための適切な方法です...

ただし、さまざまな外部要因に基づいて動的に複雑なクエリを作成しています。読みやすさと保守性の目的で、常に満たす必要のある特定の条件に対して1つのWHEREステートメントを作成し、その後、状況に応じて変更される別の(2番目の)ステートメントを追加できれば、かなり整理されます。

A.これは有効なMySQLですか?B.何か特別な理由で、それはひどい考えですか?

簡単な例を次に示します。

<?php 
$query = "
SELECT a,b,c
FROM table1
LEFT JOIN table2 on foo=bar
LEFT JOIN table3 on foo2=bar2
...
WHERE foobar = something_that_is_consistent 
AND boobar = something_else_consistent
...
";

if ( $something_special ) {
$query .= "WHERE ..."
}

if ( $something_else_special ) {
$query .= "WHERE ..."
}

これは簡単な例ですが、うまくいけば、私が考えていることと、クエリ文字列内で大きくネストされた条件を回避しようとしている方法を示しています。

4

3 に答える 3

3

いいえ。ANDで複数の句を組み合わせるために使用しWHEREます。

于 2013-01-05T20:08:26.353 に答える
1

いいえ、あなたがすることはできません。ただし、コードを簡単に調整できるため、すでにWHERE句を追加してからAND(またはOR)を使用したかどうかが記憶されます。

于 2013-01-05T20:09:35.670 に答える
1

あなたWHEREは1つである必要があり、次に使用する必要がありますAND

   <?php 
   $query = "
 SELECT a,b,c
 FROM table1
 LEFT JOIN table2 on foo=bar
 LEFT JOIN table3 on foo2=bar2
 ...
 WHERE foobar = something_that_is_consistent 
 AND boobar = something_else_consistent
 ...
 ";

if ( $something_special ) {
 $query .= "AND ..."
 }

 if ( $something_else_special ) {
 $query .= "AND ..."
 }
于 2013-01-05T20:12:55.447 に答える