アップデート:
それ以来、私がこれを行っていた方法は最適ではなく、適切に機能することは決してないことに気付き、現在は 3 つではなく 2 つのテーブルを使用していますが、これは機能しているようです.
解決策がある場合は回答を歓迎しますが、他の人が同様の問題を抱えている場合にのみ役立つようにしてください.
uid、名前、および基本情報を含むユーザーテーブルがあります。sid、設定の名前、および設定のデフォルト値を含む設定テーブルがあります。
また、ユーザーの設定を設定の名前とユーザーの名前の両方にリンクする、sid、uid、および値を含む users_settings テーブルもあります。
1 つのクエリで、どのようにユーザーを選択し、設定テーブルを "ループ" して、ユーザーの設定が存在する場合は users_settings で、存在しない場合はその設定のデフォルト値を設定ごとに選択しますか?
各設定は、結果セットに列として表示されることが望ましいです (列の名前は設定の名前であり、値は設定の値です)。
それが理解できなかった場合、ここに例があります:
ユーザー テーブル:
uid name email
1 Maria maria@example.com
4 George george@example.com
設定表:
sid name default_value
1 uicolour #f00
2 language en
users_settings テーブル:
uid sid value
4 1 #000
1 2 es
uid 4 の MySQL クエリからの望ましい結果:
uid name email setting_colour setting_language
4 George george@example.com #000 en
uid 1 の MySQL クエリからの望ましい結果:
uid name email setting_colour setting_language
1 Maria maria@example.com #f00 es