私はサッカー(サッカー)部門で行われたすべての歴史ゲームとのマッチテーブルを持っています。それは約30000ゲームになり、私の挑戦は、残りのチームに対して、与えられたチームの勝利、引き分け、負けを取り戻すことです。私はちょうど私は、私は2つの可能なシナリオを持って描く取得するためには、描画に使用します私の質問についてはグループBY列に基づいて2つのクエリの結果を合計するにはどうすればよいですか?
:
チームがホームチームである
チームが離れていますチーム
ので、私のデータによると、私のチームがホームチームである第一のシナリオのためのクエリは、このようなものです:
SELECT
matches.away_team as VS,
COUNT(matches.idmatch) AS TIES
FROM
my_football_database.matches
WHERE
home_team = 14
AND home_team_goals = away_team_goals
AND aet = "N" AND PK = "N"
GROUP BY
away_team
LIMIT 5;
出力:
+------+------+
| VS | TIES |
+------+------+
| 2 | 1 |
| 3 | 3 |
| 4 | 2 |
| 8 | 1 |
| 9 | 3 |
+------+------+
私のチームはアウェイチームである場合に、第2のシナリオがあるので、それはこのように書きます:
SELECT
matches.home_team as VS,
COUNT(matches.idmatch) AS TIES
FROM
my_football_database.matches
WHERE
away_team = 14
AND home_team_goals = away_team_goals
AND aet = "N" AND PK = "N"
GROUP BY
home_team
LIMIT 5;
出力:
+------+------+
| VS | TIES |
+------+------+
| 2 | 4 |
| 3 | 2 |
| 7 | 1 |
| 8 | 3 |
| 9 | 1 |
+------+------+
として、あなたは例として見ることができます:
- 私のチーム(ID = 14)= 3チームID VSホームチームとしてプレーしていたとき、私のチーム(ID = 14)であったとき、3試合の合計は、2番目の結果ではタイ
- として終了アウェイチーム対チームID = 3でプレーすると、合計2試合が同点として終了
"VS" IDに基づいてTIESの結果を合計するにはどうすればよいですか?同様に、ホームチームでプレーするチームのすべてのネクタイを列挙した後、アウェイチームでグループ化し、ホームチームでグループ化された離れたチームでプレーするチームのためにすべてのネクタイを列挙し、 "Vs" IDに基づいて両方の列を結合する。
この場合の例の結果は次のようになります。
+------+------+
| VS | TIES |
+------+------+
| 2 | 5 |
| 3 | 5 |
| 4 | 2 |
| 7 | 1 |
| 8 | 4 |
| 9 | 4 |
+------+------+
注:私は失い、のために描き、単一のクエリは、すべての勝利で私にテーブルを与えることができますポイントを取得する必要があります与えられたチームは、彼らが対戦したチームによってグループ化されています。
これは合計14のシナリオです。ホームアンドアウェイドロー(2)、ホームアンドアウェイはレギュラー、受賞、罰則(6)で勝利。ホームとアウェーは定期的に、授与され、罰則で敗れる(6)。
したがって、私はDrawsの問題を解決する可能性のあるコードを探しているわけではありませんが、この問題の調査、実装、実装のヒントのようなものです。私の最初のアイデアは、それぞれのシナリオを別々に作成し、それらをサブクエリとして使用することですが、パフォーマンスにとって便利ではないと言われてきました。
私はあなたの説明を理解することはできません。希望する結果のサンプルを表示できますか? – Barmar
私はちょうど1つを追加し、より良く説明しようとしました。ありがとう! –