Dapatkan nilai berkaitan bersarang dalam mysql
P粉007288593
P粉007288593 2024-04-04 17:29:06
0
2
479

Saya cuba mendapatkan semula nilai berkaitan berdasarkan berbilang entri dalam pangkalan data. Saya sangat baru dengan JOINMySQL 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粉007288593
P粉007288593

membalas semua(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 = ?

Cadangan - Jadikan nama lajur relatif sama. iaitu. Bukan languagelanguageId,但在两个表中使用相同的名称(例如使用 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粉194541072

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan