Méthode pour compter les noms en double dans la colonne Varchar/Text dans MySQL/Any SQL
P粉464113078
P粉464113078 2023-09-10 23:59:22
0
1
559

Alors voici la situation : j'ai un fichier CSV qui ressemble à ceci :

show_id   title      cast
1         Batman     Robert Pattinson, Collin Farrel, Zoë Kravitz
2         Twilight   Robert Pattinson, Kristen Stewart
3         Ava        Jessica Chastain, Collin Farrel

Ce que je dois faire est d'ouvrir ce fichier CSV dans une fonction Python et d'effectuer quelques traitements sur les espaces, etc.

Je dois ensuite le télécharger dans une base de données SQL (tout ce que je veux, mais j'ai choisi MySQL), ce qui ne pose aucun problème.

Question

Mon principal problème est que je dois ensuite (comme mon défi l'exige) créer une requête qui compte le nombre de fois qu'un acteur apparaît dans tous les films d'une liste. Donc, dans ce cas, la requête devrait ressembler à ceci :

演员               电影数量
Robert Pattinson    2
Collin Farrel       2
Zoë Kravitz         1
Kristen Stewart     1
Jessica Chastain    1

Comme vous pouvez le voir, je n'ai pas de nom que je puisse rechercher avec LIKE ou CONTAINS. Donc qu'est ce que je devrais faire? Parce que dans le CSV, la liste des acteurs de chaque film comporte plus d'un acteur et que je les enregistre dans un type varchar ou texte dans la base de données, j'ai plusieurs acteurs par ligne.

Ou dois-je créer une autre table avec des clés étrangères pour relier les acteurs et les films ? Ou n'est-il pas possible de le faire dans MySQL, mais peut-être possible dans d'autres SQL ?

P粉464113078
P粉464113078

répondre à tous(1)
P粉080643975

Si vous recherchez quelque chose d'efficace en termes de performances, vous devez diviser les données (créer 3 tables au total - Films, Acteurs, Crédits) et utiliser Cast et Crédits pour connecter les acteurs aux films, puis écrire du SQL simple avec la jointure, comme ci-dessous :

Select actors.name as Actor, count(movies.title) as Amount_of_movies from actors,
inner join cast on cast.actor_id = actors.actor_id
inner join movies on movies.movie_id = cast.movie_id;

Vous pouvez également le faire d'une autre manière en utilisant https://sebhastian.com/mysql-split-string/ou en utilisant psql/plsql et des procédures stockées. Je diviserais simplement les données si possible.

Bravo.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!