簡體   English   中英

查看幫助。 從3個表中提取數據

[英]View help. Pulling data from 3 tables

好的,在這個問題上我需要一些重要的幫助。 這就是我需要做的事情。 它需要在出勤表中獲取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

我對VIEWS的想法是全新的,我不確定從哪里開始,視圖的名稱應該是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

你可以

  • 將三個表聯接到一個子選擇中,按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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM