Vous avez 2 tables/entités, scénario très simple.MySQL: Compter les enregistrements d'une table et en mettre à jour une autre
Tableau poètes - Colonnes: id, poète, nation
Tableau nations - Colonnes: id, nation, comte
Fondamentalement, nations à poètes a une cartographie d'un à beaucoup, naturellement. Par exemple, il y a 1000 poètes de 60 nations. Chaque poète en poètes est assigné à une nation par le champ de la nation qui contient l'identifiant de l'une des nations en nations.
Le champ de comptage des nations contient le nombre de poètes dans poètes de cette nation.
Ma question est comment utiliser une seule requête SQL pour compter le nombre de poètes par nation dans poets et ensuite mettre à jour le nombre correspondant de cette nation?
J'ai essayé:
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
Mais il donne l'erreur # 1064. Aussi essayé de combiner la clause WHERE quelque part, mais il refuse toujours de travailler.
Une idée?
Merci, ça marche! –
s'il vous plaît noter que pour les très grandes tables (500000+ enregistrements) cela pourrait devenir très lent. – dusoft
En outre, si nations.count n'est pas Nullable, cela peut entraîner des avertissements. Utilisez un IFNULL pour vous protéger contre cela. UPDATE nations SET count = IFNULL ((SELECT COUNT (id) FROM poètes OERE poets.nation = nations.id GROUP BY id), 0); –