ある変数の値に応じて、クエリをエレガントに短縮できるのではないかと思います。
例:名前の付いた値が$var = 0
あり、次のようなクエリを送信したいと思います。
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100";
しかし、$ var!= 1の場合、次のようなクエリを送信したいと思います。
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100 AND id = '$var'";
したがって、$ varの値に応じて、クエリの1つを実行します。最後の表現だけが違います。私は2つの可能な解決策を見つけましたが、それらはエレガントではなく、私はそれらをまったく好きではありません。
1つはphpで作られています:
if ( $var == 0 ) {
$query_without_second_expression
} else {
$query_with_second_expression
}
2番目はmysqlで作成されます:
SELECT WHEN '$var' <> 0 THEN id, name, quantity
FROM products WHERE quantity > 100 AND id = '$var' ELSE id, name, quantity
FROM products WHERE quantity > 100 END
しかし、私はそれが好きではありません-それぞれのアイデアは、いくつかの理由でクエリを2倍にします。このようなことはできますか?
SELECT id, name, quantity
FROM products WHERE quantity > 100
CASE WHEN $var <> 0 THEN AND id = '$var'
これははるかに短く、必要に応じてクエリの一部を追加します。もちろん、実際のクエリははるかに複雑であり、より短いステートメントが実際に期待されます。誰かアイデアがありますか?