所以,這是情況:我有一個看起來像這樣的CSV檔案:
show_id title cast 1 Batman Robert Pattinson, Collin Farrel, Zoë Kravitz 2 Twilight Robert Pattinson, Kristen Stewart 3 Ava Jessica Chastain, Collin Farrel
我需要做的是在Python函數中打開這個CSV文件,對空格等進行一些處理。
然後我需要將其上傳到SQL資料庫(任何我想要的,但我選擇了MySQL),這沒有問題。
問題
我的主要問題是,然後我需要(因為我的挑戰要求如此)創建一個查詢來計算演員在列表中的所有電影中出現的次數。所以,在這種情況下,查詢應該會顯示如下:
演员 电影数量 Robert Pattinson 2 Collin Farrel 2 Zoë Kravitz 1 Kristen Stewart 1 Jessica Chastain 1
如您所見,我沒有一個可以用LIKE或CONTAINS進行搜尋的名稱。那麼,我該怎麼辦呢?因為在CSV中,每部電影的演員清單都有超過一個演員,並且我將它們保存在資料庫中的varchar或text類型中,所以每行都有多個演員。
或我應該創建另一個表格,用演員和電影的外鍵來關聯嗎?或者在MySQL中無法做到這一點,但在其他SQL中可能可以做到嗎?
如果您正在尋找性能高效的東西,您應該將數據分割(總共創建3個表- 電影,演員,演職員),並使用演職員將演員與電影連接起來,然後編寫一些帶有連接的簡單SQL,如下圖:
您也可以使用https://sebhastian.com/mysql-split-string/或使用psql / plsql和預存程序來完成另一種方式。如果可能的話,我會只是將資料分割。
乾杯。