私は実際の解決策がありますが、同じ結果を得るためのより良い方法があるかどうかは疑問でした。何も指定されていない場合、指定されたパラメータまたは空白でクエリをフィルタリングします。
シナリオ:
ユーザー・インターフェースは、GUIDに解決検索フィルタを持っています。したがって、顧客John Doe
に関連するすべてのレコードを検索する場合は、John Doeを入力し、最後のクエリが実行される前にJohn DoeがJohn Doeのcustomer_idに解決されます。 CUSTOMER_IDがXYZ-456
であれば、クエリは次のようになります。
SELECT id AS item_id FROM items WHERE items.customer_id = 'XYZ-456';
そして、これは完全な検索結果をユーザに提供するために、別のプロセスを経ることになるアイテムIDを返します。
しかし明らかに、ユーザーはフィルタを選択しないことがあります。
何も指定されていない場合SELECT id AS item_id FROM items WHERE items.customer_id LIKE '%$customer_id%';
だから、それが解決へ:
すべての項目を返しますSELECT id AS item_id FROM items WHERE items.customer_id LIKE '%%';
(望ましい結果全体WHERE
パラメータを挿入するのではなく、私は以下の溶液を用いて行ってきました)。
実際にはうまくいきますが、技術的には常に技術的に以下のcustomer_ids XYZ-456
、EXYZ-4567
の理論上の問題です.2つのidのうち短い方が両方のcustomer_idsの項目を返します。
「正しい結果を返すにはfield = 'X'ですが、 'X'が空白の場合は何も返しません。
だけ知っている:あなたはプログラミング言語でこれをしない理由はどのような理由があるの? –
どの部分をしますか?条件文で句を書いてください。私はできるだけ多くのコード、DBまたはプログラミングを最小化することを好むので。基本的には、コードで年を派生させて渡すのではなく、YEAR()のようなMySQL関数を使用するのと同じ理由です.DBはそれを行うことができ、何か問題があるかどうかを知るので、phpとmysqlやっていない。 – Anthony