Maison > Questions et réponses > le corps du texte
J'essaie de récupérer des valeurs associées en fonction de plusieurs entrées dans la base de données. Je suis très nouveau sur JOIN
MySQL en termes d'utilisation des , etc. et j'essaie d'éviter d'impliquer PHP inutilement.
Quand je dis "récupérer les valeurs associées imbriquées", regardez cet exemple :
"Person" table "Language" table "Greeting" table | personId | language | | languageId | greeting | | greetingId | value | |----------|----------| |------------|----------| |------------|-----------| | 1 | en | | en | 3 | | 1 | konichiwa | | 2 | jp | | jp | 1 | | 2 | bonjour | | 3 | fr | | fr | 2 | | 3 | hello |
Si je souhaite récupérer le message d'accueil de la première personne, le processus serait :
1 -> en -> 3 -- ID Flow en -> 3 -> hello -- Value flow Person 1: "hello" -- Final result
Alternativement, si je voulais récupérer le message d'accueil d'une troisième personne, cela se lirait :
3 -> fr -> 2 -- ID flow fr -> 2 -> bonjour -- Value flow Person 3: "bonjour" -- Final result
Alors, comment puis-je faire cela dans MySQL ? Je m'excuse si cela a déjà une réponse ; je n'arrive pas à trouver le libellé pour rechercher la bonne réponse.
P粉1869047312024-04-05 11:26:19
SELECT greeting.value FROM person JOIN language ON person.language = language.languageId JOIN greeting ON language.greeting = greeting.greetingId WHERE person.personId = ?
Suggestion - Rendre les noms de colonnes relatifs égaux. c'est à dire. Non language
和 languageId
,但在两个表中使用相同的名称(例如使用 languageId
). Il en va de même pour les colonnes Greeting et GreetingId. Cela rendra les requêtes encore plus simples :
SELECT greeting.value FROM person NATURAL JOIN language NATURAL JOIN greeting WHERE person.personId = ?
P粉1945410722024-04-05 00:49:17
JOIN joint les enregistrements de deux tables en fonction de certaines conditions. Par exemple vous souhaitez joindre les enregistrements de la table "Personne" avec les enregistrements de la table "Langue" afin que les valeurs de la colonne language
中的值等于列 languageId
puissent se faire en donnant la clause FROM suivante :
FROM Person INNER JOIN Language ON Person.language = Language.languageId
Le résultat de ce JOIN est un tableau qui ressemble à ceci
Person.personId | Personnages.Langue | Langue.LanguageId | Langue.salutation |
---|---|---|---|
1 | un | un | 3 |
2 | Japon | Japon | 1 |
3 | fr | fr | 2 |