「app_Update_Users」と呼ぶアプリケーションの SELECT ステートメントについて助けが必要です。このアプリケーションは、Users テーブルのレコードを更新するように設計されています。アプリケーション コードは、次のテーブルを参照します。
- 州
- 郡
- 組織
- ユーザー
States テーブルには、米国の 50 州すべてのリストが含まれています。County テーブルには、カリフォルニア州の 58 の郡のリストが含まれています。Organization テーブルには、カリフォルニア州の 1 つ以上の郡でサービスを提供している、任意の州にある可能性のある組織のリストが含まれています。ユーザー レコードを追加または更新するときに、組織が所在する州とサービスを提供する郡に基づいて、組織のリストをフィルター処理したいと考えています。
このアプリケーションには、Users レコード内の属性の選択リストを作成するための 3 つの select-type ステートメントがあります。最初の 2 つのステートメントで機能するコードを作成しましたが、3 番目のステートメントのコードに問題があります。これらのステートメントで参照されるフィールドは次のとおりです。 - uState - uCounty - uOrganization
uState および uCounty フィールドのステートメントは、onChange Ajax 処理を呼び出して、uOrganization フィールドの選択リストの選択を更新します。最初の 2 つのフィールドの選択リストのオプションは、次のコードで選択されます。
uState フィールドの場合:
SELECT stAbbr, CONCAT(stAbbr, ' - ', stStatePK)
FROM States
ORDER BY stAbbr;
uCounty フィールドの場合:
SELECT cCounty, cCounty
FROM Counties
ORDER BY cCounty;
組織は複数の郡で活動できるため、Organizations テーブルのレコードは oCounties フィールドに複数の郡をリストすることができます。したがって、uOrganization フィールドの選択リストのオプションは、現在、次のコードで選択されています。
SELECT oName
FROM Organizations
WHERE oCounties LIKE '%{uCounty}%'
ORDER BY oName ASC ;
次のコードを使用して、レコードが存在する州に基づいて Organizations テーブルのレコードを選択することもできます。
SELECT oName, oName
FROM Organizations
WHERE oState = '{uState}'
ORDER BY oName ASC ;
ただし、uOrganization フィールドのオプションを選択するために使用したいロジックは、これら 2 つのコード スニペットを結合します。簡単な英語では、次のようになります。「uState フィールドが「カリフォルニア」に設定されている場合、uCounty フィールドの値に基づいて組織テーブルからレコードを選択します。uState フィールドが「カリフォルニア」に設定されていない場合をクリックし、uState フィールドの値に基づいて Organizations テーブルからレコードを選択します。
次の IF 。. . それから 。. . ELSE 構文は要点を理解しますが、機能しません。
IF uState = 'CA' THEN
SELECT oName, oName
FROM Organizations
WHERE oCounties LIKE '%{uCounty}%'
ORDER BY oName ASC ;
ELSE
SELECT oName, oName
FROM Organizations
WHERE oState = '{uState}'
ORDER BY oName ASC ;
ENDIF
このコードを書く正しい方法は何ですか?