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

Cara memutar skema nilai entitas-atribut MySQL

Pertanyaannya menyebutkan MySQL, dan sebenarnya DBMS ini memiliki fungsi khusus untuk masalah seperti ini:GROUP_CONCAT(expr) . Lihat di referensi MySQL manual tentang fungsi grup-demi-fungsi . Fungsi tersebut telah ditambahkan di MySQL versi 4.1. Anda akan menggunakan GROUP BY FileID dalam kueri.

Saya tidak begitu yakin tentang bagaimana Anda ingin hasilnya terlihat. Jika Anda ingin setiap atribut terdaftar untuk setiap item (bahkan jika tidak disetel), itu akan lebih sulit. Namun, ini adalah saran saya untuk melakukannya:

SELECT bt.FileID, Title, Author, 
 GROUP_CONCAT(
  CONCAT_WS(':', at.AttributeName, at.AttributeType, avt.AttributeValue) 
  ORDER BY at.AttributeName SEPARATOR ', ') 
FROM BaseTable bt JOIN AttributeValueTable avt ON avt.FileID=bt.FileID 
 JOIN AttributeTable at ON avt.AttributeId=at.AttributeId 
GROUP BY bt.FileID;

Ini memberi Anda semua atribut dalam urutan yang sama, yang mungkin berguna. Outputnya akan seperti berikut:

'F001', 'Dox', 'vinay', 'CustomAttr1:varchar(40):Akash, CustomUseDate:Datetime:2009/03/02'

Dengan cara ini Anda hanya memerlukan satu kueri DB tunggal, dan hasilnya mudah diurai. Jika Anda ingin menyimpan atribut sebagai Datetime dll. di DB, Anda harus menggunakan SQL dinamis, tetapi saya akan menghindarinya dan menyimpan nilainya dalam varchars.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan catatan duplikat di MySQL

  2. Web2py – Bermigrasi dari SQLite ke MySQL

  3. Setara dengan meledak() untuk bekerja dengan string di MySQL

  4. MySQL TIMEDIFF() vs TIMESTAMPDIFF():Apa Bedanya?

  5. Ekspor Database MySQL ke Database SQLite