Rumah > Soal Jawab > teks badan
Saya cuba mendapatkan semula nilai berkaitan berdasarkan berbilang entri dalam pangkalan data. Saya sangat baru dengan JOIN
MySQL dari segi penggunaan s dll dan saya cuba mengelak daripada melibatkan PHP tanpa perlu.
Apabila saya menyebut "dapatkan semula nilai berkaitan bersarang", lihat contoh ini:
"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 |
Jika saya ingin mendapatkan semula salam orang pertama, prosesnya ialah:
1 -> en -> 3 -- ID Flow en -> 3 -> hello -- Value flow Person 1: "hello" -- Final result
Sebagai alternatif, jika saya ingin mendapatkan kembali salam orang ketiga, ia akan berbunyi:
3 -> fr -> 2 -- ID flow fr -> 2 -> bonjour -- Value flow Person 3: "bonjour" -- Final result
Jadi, bagaimana saya boleh melakukannya dalam MySQL? Saya memohon maaf jika ini sudah mempunyai jawapan; Saya tidak dapat mencari perkataan untuk menyelidik jawapan yang betul.
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 = ?
Cadangan - Jadikan nama lajur relatif sama. iaitu. Bukan language
和 languageId
,但在两个表中使用相同的名称(例如使用 languageId
). Begitu juga dengan lajur Ucapan dan salamId. Ini akan menjadikan pertanyaan lebih mudah:
SELECT greeting.value FROM person NATURAL JOIN language NATURAL JOIN greeting WHERE person.personId = ?
P粉1945410722024-04-05 00:49:17
JOIN menyertai rekod daripada dua jadual berdasarkan syarat tertentu. Sebagai contoh, anda ingin menyertai rekod dalam jadual "Orang" dengan rekod dalam jadual "Bahasa" supaya nilai dalam lajur language
中的值等于列 languageId
boleh dilakukan dengan memberikan klausa FROM berikut:
FROM Person INNER JOIN Language ON Person.language = Language.languageId
Hasil JOIN ini adalah jadual yang kelihatan seperti ini
Person.personId | Watak.Bahasa | Bahasa.LanguageId | Bahasa.salam |
---|---|---|---|
1 | satu | satu | 3 |
2 | Jepun | Jepun | 1 |
3 | fr | fr | 2 |