2012-02-12 6 views
2

私はウェブを精練していて、似たようなものを見つけることができなかった助けが必要です。私は私のゴルフリーグのMYSQLデータベースを持っています。このデータベースからビューを作成して順位を表示する必要があります。チームごとに2人がいます。「選手」の私の主なキーは「id」です。チームメイトに対応する各選手のチームID(数値1〜20,20チーム)もあります。基本的に私が必要とするのは、 'teamID'、両方のプレーヤーのLName(おそらく 'LNameA'、 'LNameB')、そして2人のポイントのフィールドの合計です。私は決して1人の人と他の人のフィールドを合計したり、MYSQLのビューを作成したりしていません。MYSQLフィールドを表示して合計する

編集:私は

CREATE 
VIEW standings1 
AS SELECT teamID, LName, points 
FROM players 

ような何かをしようとしたが、各選手の最後の名前が含まれていますビューの主キーであることをteamIDを必要とし、そのポイントが加算された

+0

あなたの質問の文言は弱いですが、インラインtable.columnではなく質問のサンプルデータ/テーブル構造の一部を表示する方が良い場合があります。 id.ranges ...問題のテーブルの構造を、両方のチームメイトが単一の行にあるか、エントリごとにチーム/プレーヤに正しく正規化し、プレーヤのテーブルが姓、ファーストネームなどクエリはおそらく非常に単純ですそれらの部分が提供されます。 – DRapp

+0

私のお詫びは最初の投稿です。プレイヤーはすべて自分の行にあります。他のプレイヤーとチームIDを共有していますので、2つの別々のエントリをまとめてグループ化することができます。私はPHPで順位を表示しようとしているし、私が一度もやったことのないビューを作成するのが最も簡単な方法だろうと考えました。 – Josh

答えて

2

これを試してみてください:

create view standings as 
    select teamId, group_concat(lname separator ', ') as TeamMembers, 
    sum(points) TotalPoints from players 
    group by teamId 

ああ、もう一つ。

create view standings as 
    select a.teamId, a.lname as player1, b.lname as player2, 
    a.points + b.points TotalPoints 
    from players a 
    join players b ON a.teamId = b.teamId AND a.id >= b.id 
    group by a.teamId, a.id 
    having count(*) = 2 

あなたがよりよく遊ぶことができますこの方法:あなたが別の分野での選手の名前を付けたい場合は、このクエリを使用することができます(GROUP_CONCATはちょうどカンマで区切り、それはまだ単一のフィールドです) "、"を解析することなくPHPの名前

+1

これはまさに私が感謝の必要なものでした。 – Josh

+1

+1は私がしたようにそれを過度に複雑にしていない –

1

テーブルの構造がわかっている場合は、teamIDに対してJOINが必要です。私はteamIDがチームを指していると仮定していて、プレーヤーのIDではありません。ここのトリックは、同じteamIDにテーブルの2つのコピーを結合することですが、プレーヤIDが等しくない場合です。チームごとに一対の選手が生まれるはずです。

CREATE VIEW standings AS 
(
SELECT 
    p1.teamID AS teamID, 
    p1.id AS p1id, 
    p2.id AS p2id, 
    p1.LName AS p1LName, 
    p2.LName AS p2LName, 
    p1.score + p2.score AS totalScore 
FROM 
    /* JOIN on matching teamID and non-matching player-id (so you don't get the same player twice) */ 
    players p1 JOIN players p2 ON p1.teamID = p2.teamID and p1.id <> p2.id 
); 
+0

申し訳ありませんが私は明確ではなかった、Mostachosはトリックをしました。ありがとう、結構です。 – Josh

関連する問題