檢索mysql中嵌套的相關值
P粉007288593
P粉007288593 2024-04-04 17:29:06
0
2
480

我正在嘗試根據資料庫中的多個條目檢索相關值。在使用 JOINs 等方面,我對 MySQL 非常陌生,我試圖避免不必要地涉及 PHP

當我說「檢索巢狀相關值」時,請看以下範例:

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

如果我想檢索第一個人的問候語,流程將會是:

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

或者,如果我想檢索第三個人的問候語,它會改為:

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

那麼,我該如何在 MySQL 中執行此操作?如果這已經有了答案,我深表歉意;我似乎無法找到研究正確答案的措辭。

P粉007288593
P粉007288593

全部回覆(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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板