2016-04-24 9 views
0
UPDATE CD 
    SET cdNumOfTracks = (
     SELECT COUNT(cdID) 
      FROM Track 
     WHERE Track.cdID = CD.cdID 
     GROUP BY cdID 
     ); 

上記のクエリは、「トラック」テーブルから「cdID」をカウントし、「CD」テーブルにこのカウントを表示するために使用しています列「cdNumOfTracks」。 'cdID'は "Track"テーブルの外部キーで、 "CD"テーブルから来ます。クエリは正常に動作しますが、データを更新するために手動で実行する必要があります。1つのテーブルのID値を更新して別のテーブルに表示する

私はこのデータベースをPHP/HTMLフォームを使用してデータを取得するウェブサイトの一部として使用しているため、SQLバックエンドを自動的に更新する必要があります。正常に動作しているように、このために

、私はそれを「CDID」を与えて、トラックを追加できるようにする必要があるだろうし、新しいトラックが

答えて

1

を追加しましたので、これはその後、「cdNumOfTracks」列に1を追加しますあなたの質問に対する答えは、トリガーを使用することです。挿入と削除、および場合によっては更新のためのトリガー(少なくとも)が必要です。非常に大きなデータベースがない限り、私はちょうどCDから直接カウントを取得することをお勧めします。

私は何かをメモしたいです。 group byのため、一致がない場合、0の代わりにNULLが返されます。一般に、相関サブクエリはgroup byを使用しません。

UPDATE CD 
    SET cdNumOfTracks = (SELECT COUNT(cdID) 
         FROM Track 
         WHERE Track.cdID = CD.cdID 
         ); 
関連する問題