クエリを期待される結果を返すされていません。MySQLのクエリは、()
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
結果:
:id_data tag1 tag2 summedTags
------- ------ ------ ----------
3109 0 1 2
1956 0 0 2
1928 0 0 1
2738 1 0 1
を私が間違っていると思われるもの
summedTags
はタグの実際の合計にほとんど一致しません。例ではid_data
3109は0 + 1 = 2で間違っています。id_data
1956は0 + 0 = 2も間違っているなどを示しています。 何が間違っていますか?
ところで、私もHAVING SUM(id_tag IN (75, 12)) = 2
を追加しようとしましたが、同様の結果が出ました。あなたがそれを必要とする場合
いくつかのより多くの余分な情報:
私は(id_dataに代表される、別のテーブルからのID)のデータの束を含むテーブルのtags_inserviceを持っており、データが異なるタグでタグ付けすることができます。 id_dataには0以上のid_tagがあるため、同じid_data値を持つ複数の行が存在する可能性があります。実際、同じid_tagに同じid_dataを複数回タグ付けすることが有効な場合もあります。
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)
よく書かれた質問Julian。形式を愛して:) –
ありがとう!私は長い質問を読むのが嫌いなので、「短くて甘い」方法を模索しようとしました:) – Julian