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 ?

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 ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-22 07:42:09413parcourir

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

LEFT JOIN en utilisant la clause WHERE étendue

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn