1

特定の MySQL クエリ ベースの問題に苦しんでいます。

私はそのような結果セットを持っています:

Table: Report
 mammal_id    mammal_name   fruit_name   gets  |  total  |
    3         rabbit        apple         4    |    5    |
    3         rabbit        carrot        4    |    4    |
    3         rabbit        cabbage       1    |    3    |
    2         squirrel      nuts          1    |    3    |
    2         squirrel      cabbage       2    |    2    |
    1         chipmunk      nuts          2    |    2    |
    1         chipmunk      apple         1    |    1    |

And I want to filter like this:

Table: Filtered
 mammal_id    mammal_name   fruit_name   has  
    3         rabbit        apple         4
    3         rabbit        carrot        4
    3         rabbit        cabbage       1
    2         squirrel      nuts          1
    2         squirrel      cabbage       2
    1         chipmunk      nuts          2
    1         chipmunk      apple         1

穴のポイントは、各哺乳類が運んでいる果物の総量を取得することです。

今私が持っています:

SELECT a.mammal_id, b.mammal_id, a.mammal_name, b.mammal_name, a.fruit_name, b.fruit_name, (b.total - a.total) as has
FROM (SELECT * FROM Report (result set)) as a 
INNER JOIN (SELECT * FROM Report (result set)) as b 
ON a.fruit_name=b.fruit_name WHERE  a.mammal_id = b.mammal_id-1

このクエリの後、次のような結果が得られます。

Table: Result
a.mammal_id  b.mammal_id  a.mammal_name  b.mammal_name  a.fruit_name  b.fruit_name  has
   2             3            squirrel      rabbit         cabbage        cabbge     1
   1             2            chipmunk      squirrel       nuts           nuts       1

この問題に関するガイダンスに感謝します。

4

2 に答える 2

1

次のクエリは、必要な出力を正確に提供するはずです。

SELECT mammal_id, mammal_name, fruit_name, SUM(gets) as has
FROM Report GROUP BY mammal_name, fruit_name
于 2013-08-21T01:29:13.833 に答える