Maison >base de données >tutoriel mysql >Comment puis-je récupérer les paramètres par défaut et les remplacements spécifiques aux caractères à l'aide d'un LEFT JOIN ?
Supposons que vous deviez récupérer les paramètres par défaut du tableau « Paramètres », mais que vous deviez également inclure les paramètres de rôle remplacés. Toutefois, votre requête existante récupère uniquement les paramètres qui définissent explicitement le rôle, à l'exclusion des valeurs par défaut.
Pour résoudre ce problème, nous pouvons modifier la requête pour obtenir les résultats souhaités. Au lieu de filtrer via une clause WHERE (qui exclurait les lignes où la jointure gauche a échoué), nous déplaçons la condition vers la jointure elle-même :
<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>
En déplaçant la condition dans la jointure, nous garantissons que la jointure de gauche ne réussira que si les paramètres spécifiques au rôle sont présents, et s'ils n'ont pas été remplacés, les paramètres par défaut seront toujours conservés. Cela produira le résultat souhaité :
<code class="language-php">array( '0' => array('somekey' => 'keyname', 'value' => 'thevalue'), '1' => array('somekey2' => 'keyname2'), '2' => array('somekey3' => 'keyname3') )</code>
Là où les clés 1 et 2 représentent les valeurs par défaut, la clé 0 contient la valeur par défaut améliorée avec des valeurs spécifiques au rôle.
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!