動作させようとしている MySQL コードがいくつかありますが、必要なものに IF ステートメント、IF 関数、または CASE 演算子を使用する必要があるかどうかは完全にはわかりません。私はオンラインで読んでいるものと混乱してきました.複雑にならずに正しい構文でそれらのいずれかを使用する方法を簡単な言葉でレイアウトする場所を見つけることができないので、これがばかげているように思われる場合は申し訳ありません.質問。
このコードはここで機能します:
SELECT
email,
accountgroup, othercode
FROM
(SELECT
email AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email2 AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email3 AS email,
accountgroup, othercode
FROM
accounts) account
WHERE
email LIKE '%@%'
AND accountgroup = '$row3' AND othercode = '$row4';
$row3 と $row4 は、POST されたユーザー定義値を格納しています。これらの値はデータベース内の列の値と一致しますが、ユーザーが -all- または -none- アカウント グループを選択できるように、この POST されたデータに -all- および -none- の値も追加しました。私の問題は、ユーザーが -all- または -none を選択した場合に SQL で何をすべきかわからないことです。IF ステートメントでうまくいくと思っていましたが、SQL でエラーが発生しており、IF ステートメントを適切に使用していないと確信しています。
IF ($row3= '-all-') THEN
SELECT
email,
accountgroup, othercode
FROM
(SELECT
email AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email2 AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email3 AS email,
accountgroup, othercode
FROM
accounts) account
WHERE
email LIKE '%@%'
AND accountgroup <> '' AND othercode = '$row3';
ELSEIF ($row3 = '-none-') THEN
SELECT
email,
accountgroup, othercode
FROM
(SELECT
email AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email2 AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email3 AS email,
accountgroup, othercode
FROM
accounts) account
WHERE
email LIKE '%@%'
AND accountgroup = '' AND othercode = '$row4';
ELSE
SELECT
email,
accountgroup, othercode
FROM
(SELECT
email AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email2 AS email,
accountgroup, othercode
FROM
accounts
UNION ALL
SELECT
email3 AS email,
accountgroup, othercode
FROM
accounts) account
WHERE
email LIKE '%@%'
AND accountgroup = '$row3' AND othercode = '$row4';
END IF
初心者向けにIFステートメント/関数を説明する提供できるソースと同様に、どんな助けも大歓迎です。