Heim > Datenbank > MySQL-Tutorial > Wie führt man einen Links-Join mit einer gefilterten rechten Tabelle richtig aus, um alle Standardeinstellungen und optionalen benutzerdefinierten Einstellungen abzurufen?

Wie führt man einen Links-Join mit einer gefilterten rechten Tabelle richtig aus, um alle Standardeinstellungen und optionalen benutzerdefinierten Einstellungen abzurufen?

Mary-Kate Olsen
Freigeben: 2025-01-22 08:04:15
Original
764 Leute haben es durchsucht

How to Properly Left Join with a Filtered Right-Hand Table to Retrieve All Default Settings and Optional Custom Settings?

Linker Join mit gefilterter linker Tabelle

Diese Frage befasst sich mit dem Abrufen von Daten aus zwei Tabellen, wobei eine WHERE-Klausel in der linken Tabelle verhindert, dass die erwarteten Ergebnisse auftreten. Das Ziel besteht darin, alle Standardeinstellungen aus der Einstellungstabelle und, sofern verfügbar, alle rollenspezifischen benutzerdefinierten Einstellungen für eine bestimmte Rolle abzurufen.

Ursprüngliche Anfrage:

<code class="language-sql">SELECT `settings`.*, `character_settings`.`value`
FROM (`settings`)
LEFT JOIN `character_settings` 
ON `character_settings`.`setting_id` = `settings`.`id`
WHERE `character_settings`.`character_id` = '1'  </code>
Nach dem Login kopieren

Diese Abfrage gibt jedoch nur Zeilen zurück, in denen es eine passende zeichenspezifische Einstellung für das angegebene Zeichen gibt (character_id = 1). Um Standardeinstellungen einzubeziehen (auch wenn keine rollenspezifischen Einstellungen vorhanden sind), sollte die WHERE-Klausel in die Verbindung selbst verschoben werden:

<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

Diese geänderte Abfrage führt nun effektiv einen Left-Join durch, bei dem die linke Tabelle (Einstellungen) nicht nach Kriterien gefiltert wird. Daher ruft es alle Standardeinstellungen ab und schließt optional alle rollenspezifischen Einstellungen ein, falls vorhanden.

Das obige ist der detaillierte Inhalt vonWie führt man einen Links-Join mit einer gefilterten rechten Tabelle richtig aus, um alle Standardeinstellungen und optionalen benutzerdefinierten Einstellungen abzurufen?. 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