Maison > Questions et réponses > le corps du texte
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.
P粉5855417662023-10-12 11:03:03
Lors d'un OUTER JOIN (ANSI-89 ou ANSI-92), la position du filtre est importante car les conditions spécifiées dans la clause ON
sont appliquées avant d'effectuer le JOIN. ON
子句中指定的条件。 建立 JOIN 后将应用 WHERE
子句中提供的针对 OUTER JOINed 表的条件。这可能会产生非常不同的结果集。相比之下,如果在 ON
或 WHERE
Une fois le JOIN établi
WHERE
pour 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 clause ON
ou WHERE
- le résultat sera le même. 🎜
SELECT s.*, cs.`value` FROM SETTINGS s LEFT JOIN CHARACTER_SETTINGS cs ON cs.setting_id = s.id AND cs.character_id = 1
P粉9577231242023-10-12 00:19:46
where
子句会过滤掉 left join
Ligne infructueuse. Déplacez-le vers la connexion :
SELECT `settings`.*, `character_settings`.`value` FROM `settings` LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` AND `character_settings`.`character_id` = '1'