Jadi, inilah situasinya: Saya mempunyai fail CSV yang kelihatan seperti ini:
show_id title cast 1 Batman Robert Pattinson, Collin Farrel, Zoë Kravitz 2 Twilight Robert Pattinson, Kristen Stewart 3 Ava Jessica Chastain, Collin Farrel
Apa yang perlu saya lakukan ialah membuka fail CSV ini dalam fungsi Python dan melakukan beberapa pemprosesan pada ruang dll.
Saya kemudiannya perlu memuat naiknya ke dalam pangkalan data SQL (apa-apa sahaja yang saya mahu, tetapi saya memilih MySQL), yang tidak menjadi masalah.
Soalan
Masalah utama saya ialah saya perlu (kerana cabaran saya memerlukannya) untuk membuat pertanyaan yang mengira bilangan kali pelakon muncul dalam semua filem dalam senarai. Jadi, dalam kes ini, pertanyaan sepatutnya kelihatan seperti ini:
演员 电影数量 Robert Pattinson 2 Collin Farrel 2 Zoë Kravitz 1 Kristen Stewart 1 Jessica Chastain 1
Seperti yang anda lihat, saya tidak mempunyai nama yang boleh saya cari dengan LIKE atau CONTAINS. Jadi apa yang perlu saya lakukan? Kerana dalam CSV, senarai pelakon untuk setiap filem mempunyai lebih daripada seorang pelakon, dan saya menyimpannya dalam varchar atau jenis teks dalam pangkalan data, saya mempunyai berbilang pelakon setiap baris.
Atau patutkah saya membuat jadual lain dengan kunci asing untuk mengaitkan pelakon dan filem? Atau adakah tidak mungkin untuk melakukan ini dalam MySQL, tetapi mungkin dalam SQL lain?
Jika anda sedang mencari sesuatu yang cekap prestasi, anda harus membahagikan data (buat 3 jadual secara keseluruhan - Filem, Pelakon, Kredit) dan gunakan Cast dan Kredit untuk menghubungkan pelakon dengan filem dan kemudian tulis beberapa SQL mudah dengan gabungan, sebagai ditunjukkan di bawah:
Anda juga boleh melakukannya dengan cara lain menggunakan https://sebhastian.com/mysql-split-string/atau menggunakan psql/plsql dan prosedur tersimpan. Saya hanya akan membahagikan data jika boleh.
Sekian.