これをすべて入力する前に、ここの他のスレッドから、およびGoogleを検索して、これに対する解決策を見つけようとしました。しかし、私は答えを得ることができないようです。私は自分自身をSQLでかなり上手だと思っていますが、この問題をまったく理解できていないようです。
現在、2 つのテーブルがあります。
テーブルに入力するフロントエンドのドロップダウンとして使用されるref_departments.id
andの配列を取得しようとしています。この時点で、ドロップダウンなどの作成に技術的な問題はないことを指摘しておくのが最善です。ドロップダウンは Yii フレームワークで構築されており、実際のドロップダウン自体は既に配置されています。私の問題は、ドロップダウンに入力するために必要なデータに戻すための正しい SQL ステートメントを特定することです (Yii の Chtml ヘルパー クラスを使用します)。ref_departments.department_name
company_department_norm
SELECT
私が作成しようとしているステートメントの最初の条件は、テーブルのクエリが(PK) 列の値が列に見つからないref_departments
行のみを選択するというものです。これにより、有効なオプションのみがリストに表示されます。このクエリは機能していますが、次のようになります...id
company_department_norm.department_id
SELECT RD.id, RD.department_name FROM ref_departments RD
LEFT OUTER JOIN company_department_norm CDN
ON (CDN.department_id = RD.id)
WHERE (CDN.department_id IS NULL)
このための追加の整合性/データ検証も、バックエンド (Yii モデル クラス) で行われます。
これの次のステップは、私が完全に立ち往生している部分です。の Yii モデル内ではcompany_department_norm
、company_id
フィールドは会社の FK を示します (上記を参照)。これはパラメータとしてクエリに渡され、クエリに条件を追加して、ステートメントがモデルから渡されたものと同じJOIN
右側のテーブル ( company_department_name
)の行のみと一致するようにします。テスト目的で、SQL ステートメントにハードコードされた整数 1 でこれを機能させようとしています。しかし、私の人生では、これを行う方法がわかりません。company_id
company_id
company_id
これを使用して上記のクエリで変更を試みました: -
LEFT OUTER JOIN (SELECT * FROM company_department_norm WHERE
company_department_norm.company_id = 1) CDN
ただし、これは正しいテーブルをまったくフィルタリングしていないようです。
誰でもこれで私を助けることができますか?私よりも経験豊富な SQL ユーザーの方が解決策をすぐに特定できると思いますが、私はこれを解決するために何時間も頭を悩ませてきました!