

// SQL 文を準備
$sql = 'SELECT * FROM product WHERE 1
AND cat_01 = ' . $key_01 . '
AND cat_02 = ' . $key_02 . ';
$key_01, $key_02 はそれぞれ、0 から 2 の数字と空が入ります。
cat_01, cat_02 には、0 から 2 の数字の入ってる tinyint(1)カラムです。
$key_01 が空の時や、$key_02 が空の時に、それぞれに対応するカラムの全データを出力したいのですが、どのように SQL 文を書けば良いかがわかりません。
詳しい方おりましたら、ご教授下さい。
宜しくお願い致します。
mysql Ver 8.0.16
No.2ベストアンサー
- 回答日時:
ちょっと読み違いしていたようです。
申し訳ありません。PHP (だと思う) の 変数 $key_01 の内容が空 ($key_01 == '' ) の場合、cat_01での絞り込みはしない、
ということでしょうか。
確実なのは、PHP側にif文等で cat_01 = ? という 条件自体をSQLに含めないようにする、というものです。
うまく工夫して
(cat_01 = ? +0 or '?'='' )
という状態にすることで
$key_01に数値が入っている(例: 1) → cat_01 = 1 +0 が有効 '1' = '' は常にFalseだが、判定に影響しない
$key_01が空→ '' = '' が常にTrueになる。 cat_01 = +0 は影響しない。
という動作にはなります。
ただ、効率的かどうかパフォーマスがいいかどうかは疑問です。
ご回答頂きありがとうございます。
中々、伝えにくい内容で文章力も無く、
PHP であることを書かず失礼致しました。
参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
now()かCURRENT_TIMESTAMPか
-
UNIONする際、片方テーブルしか...
-
(初心者)MySQLやmaraDBで、crea...
-
ホームページを作ろうと思いま...
-
MySQLで先頭にカラムを追加
-
AUTO_INCREMENTに0はダメ?
-
SELECT文で、指定カラム以外の...
-
sql , insert で空行(全ての列...
-
スペースによる絞り込み検索をS...
-
他のシートの検索
-
SQLServerでNULLを挿入したいです
-
BULK INSERT時のNull許容について
-
自分自身のテーブルを参照して更新
-
SQL、oracleにて文字列操作(連...
-
LIKEの右側にカラムを指定でき...
-
フレンドリストのようなものを...
-
列を行に表示する方法は?
-
Accessの「IIF」に相当するSQL...
-
[MySQL]LOAD DATA INFILE一部レ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
SELECT文で、指定カラム以外の...
-
UNIONする際、片方テーブルしか...
-
AUTO_INCREMENTに0はダメ?
-
構造が異なる二つのテーブルをu...
-
now()かCURRENT_TIMESTAMPか
-
MYSQLで全てのカラムから検索す...
-
ホームページを作ろうと思いま...
-
カラムとコラムの使い分け
-
ドロップダウンリストの連動し...
-
SQLでカラムを追加し、条件に合...
-
mysqlの配列データの読み方
-
sql , insert で空行(全ての列...
-
GREATESTで NULLをスルーする方...
-
【SQL】select に ワイルドカー...
-
ROUND関数で、四捨五入ができな...
-
カラムをコピーして、新規カラ...
-
DBエラーの意味
-
mysql 全文検索で引っかからな...
-
波形データを格納するデータベース
おすすめ情報
null です、失礼致しました。
ただ、SQL 文が難しく null の時、cat_01 カラム全検索になるという文が思いつきません。
$sql = 'SELECT * FROM product WHERE 1 AND cat_01 = ' . $key_01 . ' OR cat_01 IS NULL';