Récupération efficace des paramètres par défaut et spécifiques aux caractères avec LEFT JOIN
Cet exemple montre comment récupérer les paramètres par défaut et, le cas échéant, les remplacements spécifiques aux caractères à l'aide d'un LEFT JOIN
. La requête d'origine n'a renvoyé que les paramètres spécifiques aux caractères, à l'exclusion des valeurs par défaut.
La clé pour récupérer les deux est de positionner correctement la clause WHERE
. Au lieu de filtrer après la jointure, incorporez le filtre d'ID de personnage dans la condition de jointure :
<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>
Cette requête révisée effectue un LEFT JOIN
entre les tables settings
et character_settings
. La clause ON
garantit que seuls les setting_id
correspondants sont joints et restreint davantage la jointure aux enregistrements où character_id
est « 1 ». Surtout, le LEFT JOIN
garantit que toutes les lignes de la table settings
sont incluses dans le résultat, même s'il n'y a aucune ligne correspondante dans character_settings
.
L'ensemble de données résultant ressemblera à ceci :
<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>
Les lignes avec un value
non nul indiquent à la fois les paramètres par défaut et spécifiques aux caractères. Les valeurs NULL
dans la colonne value
signifient que seul le paramètre par défaut existe pour cette clé particulière.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!