Rufen Sie verschachtelte verwandte Werte in MySQL ab
P粉007288593
P粉007288593 2024-04-04 17:29:06
0
2
537

Ich versuche, verwandte Werte basierend auf mehreren Einträgen in der Datenbank abzurufen. Ich bin sehr neu in JOINMySQL, was die Verwendung von s usw. angeht, und ich versuche, PHP unnötig zu vermeiden.

Wenn ich „verschachtelte verwandte Werte abrufen“ sage, sehen Sie sich dieses Beispiel an:

"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     |

Wenn ich die Begrüßung der ersten Person abrufen möchte, wäre der Vorgang:

1 -> en -> 3      -- ID Flow
en -> 3 -> hello  -- Value flow
Person 1: "hello" -- Final result

Alternativ, wenn ich die Begrüßung einer dritten Person abrufen wollte, würde sie lauten:

3 -> fr -> 2        -- ID flow
fr -> 2 -> bonjour  -- Value flow
Person 3: "bonjour" -- Final result

Also, wie mache ich das in MySQL? Ich entschuldige mich, wenn es hier bereits eine Antwort gibt; ich kann anscheinend nicht den Wortlaut finden, um die richtige Antwort zu recherchieren.

P粉007288593
P粉007288593

Antworte allen(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 = ?

建议 - 使相对列名称相等。 IE。不是 languagelanguageId,但在两个表中使用相同的名称(例如使用 languageId)。 Greeting 和greetingId 列也是如此。这将使查询更加简单:

SELECT greeting.value
FROM person
NATURAL JOIN language
NATURAL JOIN greeting
WHERE person.personId = ?
P粉194541072

JOIN 根据某些条件连接两个表的记录。例如您想要将表“Person”中的记录与表“Language”中的记录连接起来,以便列 language 中的值等于列 languageId 中的值可以通过给出以下 FROM 子句来做到这一点:

FROM Person INNER JOIN Language 
  ON Person.language = Language.languageId

这个 JOIN 的结果是一个看起来像这样的表

Person.personId 人物.语言 语言.语言Id 语言.greeting
1 一个 一个 3
2 日本 日本 1
3 fr fr 2
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage