La requête:requête MySQL avec SOMME() ne retourne pas les résultats attendus
SELECT
id_data,
id_tag IN (75) AS tag1,
id_tag IN (12) AS tag2,
SUM(id_tag IN (75, 12)) summedTags
FROM
tags_inservice
WHERE id_service = 1
GROUP BY id_data
ORDER BY summedTags DESC
Le résultat:
id_data tag1 tag2 summedTags
------- ------ ------ ----------
3109 0 1 2
1956 0 0 2
1928 0 0 1
2738 1 0 1
Ce que je pense est faux:
Le summedTags
correspond rarement à la somme réelle des tags! Dans l'exemple id_data
3109 a 0 + 1 = 2 qui est faux, et id_data
1956 montre 0 + 0 = 2 ce qui est faux aussi, etc, etc Qu'est-ce que je fais mal? Par ailleurs, j'ai également essayé d'ajouter HAVING SUM(id_tag IN (75, 12)) = 2
avec des résultats similaires.
Quelques infos plus supplémentaires si vous en avez besoin:
J'ai un tags_inservice de table qui contient un tas de données (représentés par id_data, un identifiant d'une autre table) et les données peuvent être marquées par différentes balises . Un id_data peut avoir zéro ou plusieurs id_tags, donc il pourrait y avoir plus d'une ligne avec la même valeur id_data. En fait, il est parfois possible d'avoir le même identifiant id_data avec le même id_tag plus d'une fois.
DESCRIBE tags_inservice;
Field Type Null Key Default Extra
---------- ------- ------ ------ ------- --------------
id_intag int(11) NO PRI (NULL) auto_increment
id_tag int(11) YES MUL (NULL)
id_service int(11) YES MUL (NULL)
data_type int(11) YES (NULL)
id_data int(11) YES MUL (NULL)
Question bien écrite Julian. J'adore le format :) –
Merci! Je déteste lire de longues questions donc j'ai essayé de chercher un moyen de le rendre "plus court et plus doux" :) – Julian