2009-06-16 15 views
0

私は、グループ、人、および多対多テーブルgroup_id,person_idのテーブルを持っています。 groupには、各グループの現在の人数を格納するカウント列があります。可能であれば、この情報を1つのSQLコマンドで更新したいと思います。私は何らかの種類のサブクエリがこれを実現させるだろうと思っていますが、どうすればよいか分かりません。Count()の多対多テーブルに基づくテーブルの更新

このクエリが正常に彼らの数

SELECT `group_id`, COUNT(`group_id`) FROM `group-person` GROUP BY `group_id`; 
このクエリが失敗した

に私にgroup_idsのマッピングを与えるが、それは働いていた場合、これは私が

UPDATE `group`,`group-person` WHERE `group`.`id` = `group-person`.`group_id` 
SET `group`.`count` = COUNT(`group-person`.`group_id`) 
GROUP BY `group-person`.`group_id`; 
+0

更新クエリでGROUP BYを実行できません。 –

+0

ええ、わかりました。クエリが失敗しました。 – dimo414

答えて

2
UPDATE `group` 
SET `group`.`count` = (
    SELECT COUNT(*) 
    FROM `group_person` 
    WHERE `group_person`.`group_id` = `group`.`id` 
) 
を何をしようとしているだろう
+0

うわー、私は感動しました。 – dimo414

+0

私は 'SQL-86'規格を覚えていればそれが何であるか不安です。 –

関連する問題