MySQL JOUR OÙ pour chaque valeur séparément?
J'ai le type suivant de SQL:
UPDATE photo AS f
LEFT JOIN car AS c
ON f.car_id=c.car_id
SET f.photo_status=1
, c.photo_count=c.photo_count+1
WHERE f.photo_id IN ($ids)
Fondamentalement, deux tables (car
& photo
) sont liés. La liste en $id contient un unique photo d'identité, tels que (34, 87, 98, 12). Avec la requête, je suis à la définition du statut de chaque photo dans cette liste à "1" dans la photo
table et, simultanément, l'incrémentation de la photo comte dans la car
table pour la voiture à la main.
Il fonctionne, mais il y a un hic: Parce que la liste peut contenir plusieurs photos d'identité qui se rapportent à la même voiture, la photo ne compter que jamais est incrémenté une fois. Si la liste avait 10 photos associées avec la même voiture, photo_count deviendraient 1 .... alors que je tiens à incrémenter à 10.
Est-il un moyen de faire de l'incrémentation se produire pour chaque photo individuellement par le biais de la jointure, contrairement à MySQL avoir à y penser pour moi?
J'espère que le ci-dessus a un sens. Merci.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec deux requêtes:
Ce que je pense que vous devriez faire:
mettre à jour les tables en deux étapes. D'abord de définir le statut de 1 dans la table photo, puis mettre à jour le comte (à l'aide de groupe par et count(...) ) pour voiture tableau.
MODIFIER
Retiré de l' 'approche naïve' , ne fonctionne pas comme l'OP correctement unis!