J'ai un problème avec la comparaison d'une chaîne à des colonnes entières de tables différentes dans la base de données. Avoir une base de données avec deux tables en tant que catégories et le contenumysql Requête SQL pour comparer un entier et une chaîne
Maintenant, chaque texte de contenu peut appartenir à plusieurs catégories répertoriées dans la colonne category_ids de la table de contenu, séparées par une virgule. Je sais que ce n'est pas normalisé. Mais c'est déjà là.
catégories Table
id | name | timestamp
1 aaa something
2 bbb something
3 ccc something
4 ddd something
5 eee something
table de contenu
id | category_ids | content | timestamp
1 1 xxx something
2 1,2,3,4 yyy something
3 1,2 zzz something
4 1,2,3 www something
Maintenant, je dois montrer la liste des catégories avec le nombre de texte contenu dans chaque catégorie. Indique le nombre de texte de contenu utilisant cette catégorie. Note (catégorie eee est pas là dans aucun texte de contenu montrant ainsi 0 nombre dans le jeu de résultats.)
aaa(4)
bbb(3)
ccc(2)
ddd(1)
eee(0)
j'ai essayé beaucoup de façons de comparer les id de table catégories à category_ids du tableau contenu. Mais l'un est entier et l'autre est une chaîne.
une façon j'ai essayé est jeté fonction, mais a échoué
SELECT C.id , C.Name, COUNT(*) AS ContentCount FROM categories AS C LEFT JOIN content AS Q ON (CAST(C.id AS CHAR) = (Q.category_ids)) GROUP BY C.Name
S'il vous plaît ne me dites pas des moyens de changer la base de données. Si des idées que comment puis-je écrire une requête qui me donnera ce genre de jeu de résultats sera très appréciée. CSV dans une base de données est la pire idée de tous les temps.
CSV dans les bases de données est mal, vous avez été mordu. – Johan