2016-10-30 14 views
-1

流行のサイトについて、私は以下の解決策を探しています:2つのテーブル、人と関係があります。人々はいくつかの関係を持つことができますが、親としての関係は1つだけです。人々は親の関係を指す整数を持ち、関係には関係を形成する人々を指す2つの整数があります。 誰が最大の子供を抱いているのかを計算するにあたっては、最初に1つの関係にある子供の量を計算する必要があります。mysql update join

私が使用したMySQLは次のとおりです。

UPDATE relations r 
INNER JOIN persons p 
ON r.ID = p.Parents 
SET Children = SUM(p) 
GROUP BY p; 

しかし、それは、その結果: あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルを調べて、正しい構文が5行目の 'GROUP BY p'の近くで使用されるようにしてください。

何が問題なのですか?これを行うための

+0

これは最初から最後まで純粋な不器用です。 – Strawberry

+0

「主キー」と「外部キー」があります。 "指す整数"ではありません。テーブルスキーマの明確な説明がなければ、私たちはあなたを助けません。 'relations'は結合テーブルですか?言い換えれば、 'relation'は単純に2列です。ここで1番目は親のpersonテーブルのプライマリキーで、2番目はforeignテーブルからchildを示すpersonテーブルに戻ります。 – radarbob

答えて

-1

一つの方法は次のとおりです。あなたは、クエリでそのような凝集を行うことはできません

update interstream.relations r 
set r.children = 
(
select SUM(id) 
from interstream.persons 
where r.ID = Parents 
group by id 
) 
0

。サブクエリで行うことができます。

+0

ありがとう!それはまさに私が探していたものでした。 –