J'ai besoin de récupérer tous les paramètres par défaut du tableau des paramètres, mais également d'obtenir les paramètres des caractères si le caractère x est présent.
Mais cette requête ne récupère que les paramètres avec le caractère = 1, si l'utilisateur n'a rien défini, elle ne récupérera pas les paramètres par défaut.
SELECT `settings`.*, `character_settings`.`value` FROM (`settings`) LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` WHERE `character_settings`.`character_id` = '1'
Je devrais donc avoir besoin de quelque chose comme ceci :
array( '0' => array('somekey' => 'keyname', 'value' => 'thevalue'), '1' => array('somekey2' => 'keyname2'), '2' => array('somekey3' => 'keyname3') )
Où les clés 1 et 2 sont les valeurs par défaut lorsque la clé 0 contient une valeur par défaut avec une valeur de caractère.
Lors d'un OUTER JOIN (ANSI-89 ou ANSI-92), la position du filtre est importante carles conditions spécifiées dans la clause
les conditions fournies dans la clauseONsont appliquéesavant d'effectuer le JOIN.ON子句中指定的条件。建立 JOIN 后将应用WHERE子句中提供的针对 OUTER JOINed 表的条件。这可能会产生非常不同的结果集。相比之下,如果在ON或WHEREUne fois le JOIN établiWHEREpour la table OUTER JOINed seront appliquées. Cela peut produire des ensembles de résultats très différents. En revanche, cela n'a pas d'importance pour un INNER JOIN si vous fournissez la condition dans la clauseONouWHERE- le résultat sera le même.where子句会过滤掉left joinLigne infructueuse. Déplacez-le vers la connexion :