recherche

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

Récupérer les valeurs associées imbriquées dans MySQL

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粉007288593P粉007288593228 Il y a quelques jours483

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

  • P粉186904731

    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 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 = ?
    

    répondre
    0
  • P粉194541072

    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

    répondre
    0
  • Annulerrépondre