J'ai essayé de convertir une requête SELECT complexe en une requête UPDATE, mais je continue d'obtenir l'erreur de syntaxe 1064.Conversion du complexe mysql SELECT en UPDATE
L'objectif de la requête est de mettre à jour certaines lignes qui répondent à des conditions particulières, mais les jointures et les instructions GROUP BY et HAVING rendent cela impossible avec la requête que j'ai maintenant. Je sais que ce n'est pas la bonne manière, mais je ne peux pas découvrir ce que la solution devrait être. Je serais génial si quelqu'un pouvait me dire une direction pour une solution!
Ma requête (les valeurs ne sont pas correctes, mais donnent un peu plus de contexte):
UPDATE products p
JOIN products_to_specifications pts ON pts.products_id = p.products_id
JOIN products_specifications ps ON ps.specifications_id = pts.specifications_id
SET p.products_image = 'file_name.jpg'
WHERE ps.specifications_name IN ('color')
AND pts.content IN ('black')
AND p.products_manufacturer = 'BMW'
AND p.products_name = 'M5'
GROUP BY p.products_id
HAVING COUNT(DISTINCT ps.specifications_name) = 1 AND COUNT(DISTINCT pts.content) = 1
Ma structure de table:
produits de table: products_id, products_image, etc. (informations de base même pour tous les produits)
Table products_specifications: specifications_id, specifications_name
Table products_to_specifications: products_id, specifications_id, contenu
Je pense que la bonne solution, je devrai utiliser une sous-requête, mais je ne suis pas sûr de savoir comment structurer la requête
Même je ne peux pas voir le code entier ... Je pense qu'il y a une faute de frappe! vous devez remplacer p. avec t. dans tout le SELECT (sinon vous ne pouvez pas y accéder dans le dernier WHERE via t.products_id) –