Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah mungkin untuk mereferensikan nilai entri tabel mysql dari entri tabel kedua secara dinamis?

Ada 2,5 cara untuk melakukan ini (pada dasarnya dua, tetapi rasanya seperti ada tiga):

Dari yang termudah hingga tersulit...

Opsi 1:

Jika Anda membutuhkan tableA untuk mencerminkan nilai tableB, jangan simpan nilai dalam tableA sama sekali, cukup gunakan nilai tableB. Gunakan salah satu bergabung:

select a.*, b.col1
from tableA a
join tableB b on <some join condition>

atau subpilihan

select *, (select col1 from tableB where <some condition>) col1
from tableA

Opsi 2:

Jika Anda senang dengan opsi 1, konversikan ke tampilan, yang berperilaku seperti tabel (kecuali pembatasan memperbarui tampilan yang digabungkan):

create view myview as 
select ... (one of the above selects)

Opsi 3:

Buat pemicu basis data yang diaktifkan saat nilai tableB diubah dan salin nilainya ke baris/kolom yang sesuai di tableA

create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;

Perhatikan bahwa new dan old adalah nama khusus yang diberikan untuk baris baru dan lama sehingga Anda dapat mereferensikan nilai dalam tabel yang sedang diperbarui.

Pilih opsi yang paling sesuai dengan kebutuhan Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO setara dengan mysql_num_rows atau mssql_num_rows

  2. Saat menggunakan ini_set('max_execution_time', 0);

  3. Mengapa urutan luar oleh tidak berfungsi dengan benar?

  4. Indeks apa yang harus saya gunakan saat menggunakan JOIN pada PRIMARY KEY

  5. Bagaimana cara menggunakan LIKE untuk pencarian mysql dengan JOIN dan ORDER BY jumlah baris/suara terbanyak di tabel suara?