名前はブランチ名で、各ブランチには同じテーブルのidカラムを参照する親を持つことができます。この例では、「リバプール」、「マンチェスター」、「チェスター」はすべて「ノースウェスト」の子どもであり、それ自体が「マスター」の子です。MySQLでのSELECTステートメントのカスケード
id name parent_id
1 Master 0
2 North West 1
3 Liverpool 2
4 Manchester 2
5 Chester 2
私は、このようになります。これは、branchSettingsテーブルを持っている:それはマスターのよう
id branch_id settingKey settingValue
1 1 waitTime 5
2 1 timeOutTime 10
3 2 waitTime 7
4 5 waitTime 15
支店1(「マスター」)は常にすべての設定がありますし、すべての子供は、これらの設定を継承する必要がありますただし、必要に応じて各ブランチがデフォルト設定を上書きすることができます。例えば、 'North West'(id 2)は 'Liverpool'、 'Manchester'、 'Chester'とカスケードする必要がある 'waitTime'を5から7に上書きしましたが、 'Chester'(id 5) 'はノースウェストとマスターの両方をオーバーライドして15にする必要があります。
これをPHPでコード化するのではなく、SELECTコマンドをカスケードする簡単な方法があります。私はこう言うことができます... branch_id = 5のテーブルからすべての設定を選択し、彼らはどこにオーバーライド値が存在しますか?だから、それが返されます。
id branch_id settingKey settingValue
2 5 timeOutTime 10
3 5 waitTime 15
おかげ
LEFT JOINとCOALESCEを参照してください。 – Strawberry
私はこれらのコマンドを両方とも使用する方法を知っていると思いますが、私の例ではいくつかのサブブランチがあり、SELECTステートメントはテーブルをカスケードする必要があります。もう少し提供できますか? – Roo