我正在嘗試根據資料庫中的多個條目檢索相關值。在使用 JOIN
s 等方面,我對 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粉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 = ?
建議 - 使相對列名稱相等。 IE。不是 language
和 languageId
,但在兩個表中使用相同的名稱(例如使用 languageId
)。 Greeting 和greetingId 欄位也是如此。這將使查詢更加簡單:
SELECT greeting.value FROM person NATURAL JOIN language NATURAL JOIN greeting WHERE person.personId = ?
P粉1945410722024-04-05 00:49:17
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 |