2017-10-01 20 views
0

同じテーブルをクエリする以下の2つの独立したステートメントがあります。それぞれの場合にselect distinctが列に適用され、次に別の列が合計されます。 (合計ではなく)SELECT DISTINCTのためMYSQLで2つのSUM DISTINCTクエリの結果をマージする

SELECT 
    HomeTeam, SUM(FTHG) 
FROM 
    (SELECT DISTINCT HomeTeam, FTHG FROM Football_Stats.E0_1617) AS alias_name 
GROUP BY 
    HomeTeam 


SELECT 
    AwayTeam, SUM(FTAG) 
FROM 
    (SELECT DISTINCT AwayTeam, FTAG FROM Football_Stats.E0_1617) AS alias_name 
GROUP BY 
    AwayTeam 

結果は同じになり、それは以下のようなものへの単一のクエリと組み合わせた結果を返すことが可能である:

チームSUM(FTHG) SUM(FTAG)

2つの一時テーブルを結合する必要がありますか?

お詫び私はサンプルテーブルを掲載していませんが、私はフォーマットに苦労しました。申し訳ありません:

+2

を参照してください役に立てば幸いhttps://meta.stackoverflow.com/questions/333952/why-should -i-provide-an-mcve-for-what-to-the-very-simple-sql-query – Strawberry

+0

scemaとサンプルデータを追加してください。それは本当にあなたの質問を解決するのに役立つでしょう。 –

+0

選択された別個の結果からの合計値は、ほとんど常に間違っています。 「ID = 1チーム= xゴール= 3、ID = 2チーム= xゴール= 3」正しいゴールの合計= 6しかし、選択したチームの合計、ゴール= 3。 –

答えて

0

1つのオプションは...

SELECT Team,SUM(FTHGSum),SUM(FTAGSum) 
FROM 
    ((SELECT HomeTeam AS Team,SUM(FTHG) AS FTHGSum,0 AS FTAGSum FROM (SELECT DISTINCT HomeTeam,FTHG FROM ZTesting) T1 GROUP BY HomeTeam) 
    UNION ALL 
    (SELECT AwayTeam AS Team,0 AS FTHGSum,SUM(FTAG) AS FTAGSum FROM (SELECT DISTINCT AwayTeam,FTAG FROM ZTesting) T2 GROUP BY AwayTeam)) AS T 
GROUP BY Team 

NOTEを最初ALL UNIONを使用して(ただし、FTHGとFTAGのために別の列を作成する)両方のクエリ結果を追加し、再度チームがグループ化行を組み合わせています尋ねる、しかし...あなたは複数の列でDISTINCTを使用することは、列の組み合わせに区別を適用することを知っていますか?あなたの質問では、あなたが得ている目標の合計が各チームのすべてのマッチではない(チームが同じ数のゴールを得たマッチが不足している)ということは私には奇妙に思えます。しかし、もちろん、私は推測している、私はあなたの特定のケースを知らない...

は、私はそれが

関連する問題