Rumah  >  Soal Jawab  >  teks badan

Dapatkan nilai berkaitan bersarang dalam mysql

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粉007288593P粉007288593179 hari yang lalu372

membalas semua(2)saya akan balas

  • P粉186904731

    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 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 = ?
    

    balas
    0
  • P粉194541072

    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

    balas
    0
  • Batalbalas