Heim > Datenbank > MySQL-Tutorial > Wie kann ich mit einem LEFT JOIN Standardeinstellungen und zeichenspezifische Überschreibungen abrufen?

Wie kann ich mit einem LEFT JOIN Standardeinstellungen und zeichenspezifische Überschreibungen abrufen?

Susan Sarandon
Freigeben: 2025-01-22 07:42:09
Original
452 Leute haben es durchsucht

How Can I Retrieve Default Settings and Character-Specific Overrides Using a LEFT JOIN?

LEFT JOIN mit erweiterter WHERE-Klausel

Angenommen, Sie müssen Standardeinstellungen aus der Tabelle „Einstellungen“ abrufen, aber auch überschriebene Rolleneinstellungen einbeziehen. Ihre vorhandene Abfrage ruft jedoch nur Einstellungen ab, die die Rolle explizit festlegen, mit Ausnahme von Standardwerten.

Um dieses Problem zu lösen, können wir die Abfrage ändern, um die gewünschten Ergebnisse zu erhalten. Anstatt über eine WHERE-Klausel zu filtern (die Zeilen ausschließen würde, in denen der linke Join fehlgeschlagen ist), verschieben wir die Bedingung in den Join selbst:

<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>
Nach dem Login kopieren

Durch das Verschieben der Bedingung in den Join stellen wir sicher, dass der Left-Join nur erfolgreich ist, wenn rollenspezifische Einstellungen vorhanden sind, und wenn diese nicht überschrieben wurden, bleiben die Standardeinstellungen weiterhin erhalten. Dies führt zum gewünschten Ergebnis:

<code class="language-php">array(
    '0' => array('somekey' => 'keyname', 'value' => 'thevalue'),
    '1' => array('somekey2' => 'keyname2'),
    '2' => array('somekey3' => 'keyname3')
)</code>
Nach dem Login kopieren

Während die Schlüssel 1 und 2 Standardwerte darstellen, enthält Schlüssel 0 den Standardwert, erweitert um rollenspezifische Werte.

Das obige ist der detaillierte Inhalt vonWie kann ich mit einem LEFT JOIN Standardeinstellungen und zeichenspezifische Überschreibungen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage