Récupérer les valeurs associées imbriquées dans MySQL
P粉007288593
P粉007288593 2024-04-04 17:29:06
0
2
525

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 JOINMySQL 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粉007288593
P粉007288593

répondre à tous(2)
P粉186904731
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 languagelanguageId,但在两个表中使用相同的名称(例如使用 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粉194541072

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal