0

SQLフィドルはこちら

"id"    "type"  "parent"    "country"   "totals"
1       3       0           US          0       //Desired output 5
2       10      1           US          0
3       10      1           US          0
4       10      1           US          0
5       10      1           US          0
6       10      1           US          0

7       3       0           US          0       //Desired output 5
8       10      7           US          0
9       10      7           US          0
10      10      7           US          0
11      10      7           US          0
12      10      7           US          0

13      3       0           SE          0       //Desired output 1
14      10      13          SE          0

15      3       0           SE          0       //Desired output 3
16      10      15          SE          0
17      10      15          SE          0
18      10      15          SE          0

上の表では、すべての親を子の数で更新しようとしてい(how many children each has)ます。

親がいてtype 3、子供がいtype 10て、国が側にあります。

私がやろうとしていることは次のとおりです。

`select count(*) as totalChildren ,parent,country where type= 10` then
`update table set totals = totalChildren where parent = parent from above and country = country from above`.

私はこれらの行で何かをしていましたが、どこにも行かないようです. 手伝ってくれませんか?

UPDATE  likesd a
        INNER JOIN
        (
            SELECT  country, parent, count(id) totalChildren
            FROM    likesd
            WHERE   type = 10
            GROUP   BY parent
        ) b ON a.country = b.country and a.parent=b.parent
SET     a.totals = b.totalChildren
WHERE   a.type = 3 and a.country = b.country;

編集 - ワーキングアンサー

UPDATE  likesd a
        INNER JOIN
        (
            SELECT  country, parent, count(id) totalChildren
            FROM    likesd
            WHERE   type = 10
            GROUP   BY parent
        ) b ON a.id=b.parent and a.country = b.country
SET     a.totals = b.totalChildren
WHERE   a.type = 3 and a.id = b.parent and a.country = b.country;
4

1 に答える 1

1

これはうまくいくはずです。あなたはa.parent = b.parentあるべき場所にいましたa.id = b.parent

UPDATE  likesd a
    INNER JOIN
    (SELECT  parent, count(id) totalChildren
       FROM    likesd
      WHERE   type = 10
      GROUP   BY parent) b ON a.id=b.parent
SET     a.totals = b.totalChildren
WHERE   a.type = 3

(変な形ですみません。)

ここで SQL フィドル: http://sqlfiddle.com/#!2/0c5b0d/1

于 2013-05-26T09:10:18.757 に答える