このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1252492296/877
#  T_USER T_HOGE T_MAG         T_USER 
#  ID|NUM  ID      MAG             ID|NUM 
#  --|---- --      --             --|---- 
#  A | 100  A      100  .→→→    A | 300 
#  B | 100  A         update結果  B | 200 
#  C | 100  B                   C | 100 
#   
#  「T_HOGE.IDがT_USER.IDと一致する数×T_MAG.MAG」の結果を 
#  T_USER.NUMに対し加算するUPDATE文を書きたいのですが 
#  どうすればよいでしょうか。IDはVARCHAR型です。 
#  DBMSはMySQL 5.1です。 
# 
# 

'「T_HOGE.IDがT_USER.IDと一致する数×T_MAG.MAG」の結果をT_USER.NUMに対し加算するUPDATE文' :-
      '「T_HOGE.IDがT_USER.IDと一致する数×T_MAG.MAG」の結果をT_USER.NUMに対し加算するUPDATE文'(_),
      fail.
'「T_HOGE.IDがT_USER.IDと一致する数×T_MAG.MAG」の結果をT_USER.NUMに対し加算するUPDATE文'.

'「T_HOGE.IDがT_USER.IDと一致する数×T_MAG.MAG」の結果をT_USER.NUMに対し加算するUPDATE文'(ID) :-
      'T_MAG'(MAG),
      retract('T_USER'(ID,NUM)),
      count('T_HOGE'(ID),Count),
      NUM2 is NUM + MAG * Count,
      assertz('T_USER'(ID,NUM2)).