Effizientes Abrufen von Standard- und zeichenspezifischen Einstellungen mit LEFT JOIN
Dieses Beispiel zeigt, wie Sie Standardeinstellungen und gegebenenfalls zeichenspezifische Überschreibungen mithilfe eines LEFT JOIN
abrufen. Die ursprüngliche Abfrage hat nur zeichenspezifische Einstellungen zurückgegeben, mit Ausnahme der Standardeinstellungen.
Der Schlüssel zum Abrufen beider liegt in der richtigen Positionierung der WHERE
-Klausel. Anstatt nach der Verknüpfung zu filtern, integrieren Sie den Zeichen-ID-Filter in die Verknüpfungsbedingung:
<code class="language-sql">SELECT settings.*, character_settings.value FROM settings LEFT JOIN character_settings ON character_settings.setting_id = settings.id AND character_settings.character_id = '1';</code>
Diese überarbeitete Abfrage führt einen LEFT JOIN
zwischen den Tabellen settings
und character_settings
durch. Die ON
-Klausel stellt sicher, dass nur übereinstimmende setting_id
s verknüpft werden, und beschränkt die Verknüpfung weiter auf Datensätze, bei denen character_id
„1“ ist. Entscheidend ist, dass LEFT JOIN
garantiert, dass alle Zeilen aus der settings
-Tabelle im Ergebnis enthalten sind, auch wenn es in character_settings
keine passende Zeile gibt.
Der resultierende Datensatz wird wie folgt aussehen:
<code class="language-php">array( 0 => array('somekey' => 'keyname', 'value' => 'thevalue'), // Default + Character-specific (if exists) 1 => array('somekey2' => 'keyname2', 'value' => null), // Default only 2 => array('somekey3' => 'keyname3', 'value' => null) // Default only );</code>
Zeilen mit einem Wert ungleich Null value
geben sowohl Standardeinstellungen als auch zeichenspezifische Einstellungen an. NULL
-Werte in der Spalte value
bedeuten, dass für diesen bestimmten Schlüssel nur die Standardeinstellung existiert.
Das obige ist der detaillierte Inhalt vonWie rufe ich Standard- und zeichenspezifische Einstellungen mithilfe eines LEFT JOIN ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!