1

わかりました、この件について大きな助けが必要です。これは、ビューで行う必要があることです。出席テーブルの DKP_Change 列の合計を取る必要があります

 SELECT SUM(a.DKP_Change) FROM Attendance AS a GROUP BY Name

文字テーブルから初期 DKP の値を追加します

 SELECT b.Inital_DKP FROM Characters AS b GROUP BY Name

レイド ドロップの合計コストを差し引く

 SELECT SUM(c.Cost) FROM Raid_Drops AS c GROUP BY Name

ビューの名前は DKP である必要があり、列は Name および Total_DKP である必要があります。総 dkp は上記の select ステートメントから計算されます。

3 つのテーブルすべての作成を次に示します。

CREATE TABLE `Attendance` (
 `Date` date NOT NULL,
 `Name` varchar(20) NOT NULL,
 `Hours` int(11) NOT NULL,
 `Penalty` float NOT NULL,
 `Rank` set('Raider','Core','Elite') NOT NULL,
 `Rate` int(11) NOT NULL,
 `DKP_Change` float NOT NULL,
 `RecordNumber` int(11) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`RecordNumber`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1

CREATE TABLE `Characters` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `Name` varchar(25) NOT NULL,
 `Class` varchar(25) NOT NULL,
 `Spec` varchar(25) NOT NULL,
 `Position` set('Healer','Tank','DPS') NOT NULL COMMENT 'Healer, Tank, or DPS',
 `Usable` set('Cloth','Mail','Plate') NOT NULL COMMENT 'Type of Usable Armor? Cloth,        Mail, Or Plate',
 `Primary Stat` set('Agility','Strength','Intellect','Healer','Tank') NOT NULL COMMENT     'Used for Sorting Only(ie dps trinket with agility strength dps not eligible)',
 `Initial_DKP` int(11) NOT NULL COMMENT 'DKP given at the start of current tier.',
 `Total_DKP` int(11) NOT NULL COMMENT 'Huge Complicated Mess.',
 PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

CREATE TABLE `Raid_Drops` (
 `Record Number` int(11) NOT NULL,
 `Date` date NOT NULL,
 `Name of Item` varchar(25) NOT NULL,
 `Item Slot` enum('Main Hand','Off Hand','Head','Neck','Shoulder','Back','Chest','Wrist','Hands','Waist','Legs','Feet','Ring 1','Ring 2','Trinket 1','Trinket 2') NOT NULL,
 `Player_Name` varchar(25) NOT NULL,
 `Cost` float NOT NULL,
 PRIMARY KEY (`Record Number`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
4

1 に答える 1

0

あなたは出来る

  • サブセレクトで 3 つのテーブルを結合し、グループ化します。Name
  • 各副選択の結果に対して計算を実行します

私には完全に明確ではない唯一の部分は、の名前Charactersが一意であるかどうかです。そうであれば、グループをドロップできます。そうでない場合、AVG は予期しない結果をもたらす可能性があります。

SQL ステートメント

SELECT sumA
       , initialB
       , sumC
       , sumA + initialB - sumC
       , a.Name
FROM   (
         SELECT Name, SUM(DKP_Change) AS sumA 
         FROM Attendance 
         GROUP BY Name
       ) AS a
       INNER JOIN (
         SELECT Name, Inital_DKP AS initialB 
         FROM Characters 
       ) AS b ON a.Name = b.Name
       INNER JOIN (
         SELECT Name, SUM(Cost) AS sumC 
         FROM Raid_Drops 
         GROUP BY Name
       ) AS c ON c.Name = b.Name
于 2012-12-11T05:50:00.527 に答える