recherche

Maison  >  Questions et réponses  >  le corps du texte

Clause Where utilisée dans la jointure gauche

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粉439804514P粉439804514418 Il y a quelques jours702

répondre à tous(2)je répondrai

  • P粉585541766

    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 表的条件。这可能会产生非常不同的结果集。相比之下,如果在 ONWHEREUne fois le JOIN établi

    les conditions fournies dans la clause 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

    répondre
    0
  • P粉957723124

    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'

    répondre
    0
  • Annulerrépondre