Mysql 查看帮助。从3个表中提取数据
好的,我需要一些关于这个问题的主要帮助。这就是我需要视图所做的。需要取考勤表中DKP_变更列的总和Mysql 查看帮助。从3个表中提取数据,mysql,Mysql,好的,我需要一些关于这个问题的主要帮助。这就是我需要视图所做的。需要取考勤表中DKP_变更列的总和 SELECT SUM(a.DKP_Change) FROM Attendance AS a GROUP BY Name 添加字符表中初始DKP的值 SELECT b.Inital_DKP FROM Characters AS b GROUP BY Name 减去raid丢弃选项卡成本的总和 SELECT SUM(c.Cost) FROM Raid_Drops AS c GROUP BY
SELECT SUM(a.DKP_Change) FROM Attendance AS a GROUP BY Name
添加字符表中初始DKP的值
SELECT b.Inital_DKP FROM Characters AS b GROUP BY Name
减去raid丢弃选项卡成本的总和
SELECT SUM(c.Cost) FROM Raid_Drops AS c GROUP BY Name
我对视图的概念是完全陌生的,我不确定从哪里开始,视图的名称应该是DKP,列应该是name和Total_DKP,其中Total 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
- 对每个子选择的结果执行计算
字符中的名称是否唯一。如果是的话,你可以顺道去看看他们。如果不是,平均值可能会给您带来意想不到的结果
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
name
是否存在于所有表格中?是否有任何ID
是主键?您可以显示表定义吗?将表的表定义添加到问题中,以便人们可以使用它,或者将您的模式与所需的表保持在sqlfiddle中。是的,每个表中都有“Name”。我已将每个表的CREATE
命令添加到操作面板中Characters
表中的Name
字段为空UNIQUE
你是对的。当我尝试运行你的代码时,我得到“#1054-字段列表中的未知列'a.DKP_Change'”@user1886669-我已经删除了子选择中的表别名。你能再试一次吗?