Je suggérerais fortement de normalize
vos données comme d'autres l'ont suggéré.
En fonction de votre conception actuelle, vous pouvez utiliser FIND_IN_SET
pour obtenir le résultat souhaité.
SELECT
M.id,
M.name,
COUNT(*) total
FROM members M
INNER JOIN videos V ON FIND_IN_SET(M.name,V.members) > 0
GROUP BY M.name
ORDER BY M.id
En exécutant cette requête sur votre ensemble de données donné, vous obtiendrez une sortie comme ci-dessous :
| id | name | total |
|----|-------|-------|
| 1 | Tom | 2 |
| 2 | Bob | 2 |
| 3 | Zack | 3 |
| 4 | Dan | 3 |
| 5 | Casey | 2 |
A lire absolument
Est-ce vraiment si mauvais de stocker une liste délimitée dans une colonne de base de données ?
Plus
C'est ainsi que vos vidoes
le tableau ressemblerait si vous normalisiez vos données :
vidoes
id member_id