Aidez-nous s'il vous plaît. J'essaie de mettre à jour ce tableau avec le nombre actuel d'actifs de nos produits. Si le produit existe déjà dans la table, il doit mettre à jour le nombre le plus mis à jour du produit. Cependant, en utilisant la requête ci-dessous, mysql me retourneINSERT ... SELECT ... OERE ... SUR DUPLICATE ... requête mysql
"ERREUR 1111 (HY000): Utilisation invalide de la fonction de groupe".
Je ne peux pas déterminer ce qui est mon erreur ou si elle est vraiment valide pour utiliser count en fonction « clé en double »:
INSERT INTO report_count_assets
SELECT products.product_id,
count(product_assets.asset_id),
count(case when assets.asset_type_id=1 THEN 1 END),
count(case when assets.asset_type_id=2 THEN 1 END),
count(case when assets.asset_type_id=3 THEN 1 END),
count(case when assets.asset_type_id=11 THEN 1 END)
FROM products
LEFT JOIN product_assets USING (product_id)
LEFT JOIN assets USING (asset_id)
WHERE products.brand_id=671
ON DUPLICATE KEY UPDATE
asset_count = count(product_assets.asset_id),
asset_type_image = count(case when assets.asset_type_id=1 THEN 1 END),
asset_type_video = count(case when assets.asset_type_id=2 THEN 1 END),
asset_type_sound = count(case when assets.asset_type_id=3 THEN 1 END),
asset_type_install = count(case when assets.asset_type_id=11 THEN 1 END);
thi s [Question] (http://stackoverflow.com/questions/2330840/mysql-invalid-use-of-group-function) peut vous aider – diEcho
Salut @diEcho, je ne suis pas particulièrement à la recherche de quels produits ont ces chiffres certains dans leurs actifs. Ma préoccupation est la partie mise à jour de la requête lorsque le produit est déjà présent dans la table. Je ne sais pas comment la requête select-join peut être implémentée sur 'ON DUPLICATE KEY UPDATE' –