Rumah > Soal Jawab > teks badan
Saya mempunyai dua meja, meja perpindahan dan meja kelab.
Ini adalah pemindahan meja:
id | Nama | Nama keluarga | Dari kelab | Pergi ke kelab | Harga | mengikut nombor belakang | Nombor pemulangan |
---|---|---|---|---|---|---|---|
0 | Contoh 1 | Contoh 2 | EX3 | EX4 | Contoh 5 | Contoh 6 | Contoh 7 |
Ini ialah kelab meja:
id | Singkatan | Nama penuh |
---|---|---|
0 | EX3 | Contoh 3 |
1 | EX4 | Contoh 4 |
Saya ingin mengambil satu baris dari jadual perpindahan, mendapatkan fromclub, memadankannya dengan singkatan dalam Clubs, mendapatkan nama penuh dari baris, dan menambahnya pada respons. Saya mahu melakukan perkara yang sama dengan lajur toclub. Kemudian saya mahu mengulanginya untuk setiap baris lain dalam pemindahan jadual.
Untuk memastikan perkara mudah, inilah hasil jangkaan saya:
id | Nama | Nama keluarga | Dari kelab | Pergi ke kelab | Harga | mengikut nombor belakang | Nombor pemulangan | Daripada nama penuh kelab | nama penuh toclub |
---|---|---|---|---|---|---|---|---|---|
0 | Contoh 1 | Contoh 2 | EX3 | EX4 | Contoh 5 | Contoh 6 | Contoh 7 | Contoh 3 | Contoh 4 |
Saya nampaknya tidak dapat mencari cara untuk membina pertanyaan yang melakukan ini tanpa mendapat sekitar 512 baris hasil, walaupun saya pada masa ini hanya mempunyai 8 baris hasil.
SELECT * FROM transfers, (SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.fromclub) AS fromclubfullname, (SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.toclub) AS toclubfullname
Ia mengembalikan 512 baris dan dua lajur (dipanggil nama penuh) dan bukannya satu lajur dari nama penuh kelab dan nama penuh kelab.
P粉8271215582024-04-03 15:15:27
Anda boleh melakukan ini melalui 左连接
-
SELECT transfers.*, c1.fullname as fromclubfullname, c2.fullname as toclubfullname FROM `transfers` LEFT JOIN clubs c1 ON (c1.abbr = transfers.fromclub) LEFT JOIN clubs c2 ON (c2.abbr = transfers.toclub)