1
表結構:
教練表加入返回錯誤值的數據庫
+----+-----------+-------+
| ID | Name | Age |
+----+-----------+-------+
| 1 | Aaron | 39 |
| 2 | John | 41 |
| 3 | Macy | 44 |
| 4 | Mitchelle | 37 |
| 5 | Candice | 32 |
+----+-----------+-------+
見習表
+----+---------+-------+
| ID | Name | Age |
+----+---------+-------+
| 6 | Abigail | 9 |
| 7 | Jim | 12 |
| 8 | Jack | 7 |
| 9 | Maria | 14 |
| 10 | Andy | 11 |
+----+---------+-------+
收費表
+----+----------+------------+--------+
| ID | Coach_ID | Trainee_ID | Fee |
+----+----------+------------+--------+
| 11 | 1 | 7 | 2400 |
| 12 | 2 | 6 | 2000 |
| 13 | 3 | 6 | 2000 |
| 14 | 4 | 8 | 1243 |
| 15 | 5 | 8 | 1275 |
| 16 | 3 | 9 | 9010 |
| 17 | 2 | 8 | 1900 |
| 18 | 1 | 7 | 600 |
| 19 | 2 | 10 | 1010 |
| 20 | 5 | 10 | 2110 |
+----+----------+------------+--------+
所需的輸出
+-----------+--------------+--------+
| Name | Trainee_name | Fee |
+-----------+--------------+--------+
| Aaron | Jim | 2400 |
| Candice | Andy | 2110 |
| John | Abigail | 2000 |
| Macy | Maria | 9010 |
| Mitchelle | Jack | 1243 |
+-----------+--------------+--------+
=====
我的查詢
Select
Coach.Name as Name, Trainee.Name as Trainee_name, Max(Fee.Fee) as Fee
From Fee
INNER JOIN Trainee
ON Fee.Trainee_ID = Trainee.ID
INNER JOIN Coach
ON Fee.Coach_ID = Coach.ID
GROUP BY Coach.Name
ORDER BY Coach.Name;
我的輸出:
+------------+---------------+--------+
| Name | Trainee_name | Fee |
+------------+---------------+--------+
| Aaron | Jim | 2400 |
| Candice | Jack | 2110 |
| John | Abigail | 2000 |
| Macy | Abigail | 9010 |
| Mitchelle | Jack | 1243 |
+------------+---------------+--------+
對應於康迪斯和梅西的數據是在列trainee_name不正確。
轉儲SQL數據庫的:
CREATE TABLE IF NOT EXISTS `coach` (
`ID` int(11) NOT NULL,
`Name` text NOT NULL,
`Age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `coach` (`ID`, `Name`, `Age`) VALUES
(1, 'Aaron', 39),
(2, 'John', 41),
(3, 'Macy', 44),
(4, 'Mitchelle', 37),
(5, 'Candice', 32);
CREATE TABLE IF NOT EXISTS `fee` (
`ID` int(11) NOT NULL,
`Coach_ID` int(11) NOT NULL,
`Trainee_ID` int(11) NOT NULL,
`Fee` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `fee` (`ID`, `Coach_ID`, `Trainee_ID`, `Fee`) VALUES
(11, 1, 7, 2400),
(12, 2, 6, 2000),
(13, 3, 6, 2000),
(14, 4, 8, 1243),
(15, 5, 8, 1275),
(16, 3, 9, 9010),
(17, 2, 8, 1900),
(18, 1, 7, 600),
(19, 2, 10, 1010),
(20, 5, 10, 2110);
CREATE TABLE IF NOT EXISTS `trainee` (
`ID` int(11) NOT NULL,
`Name` text NOT NULL,
`Age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `trainee` (`ID`, `Name`, `Age`) VALUES
(6, 'Abigail', 9),
(7, 'Jim', 12),
(8, 'Jack', 7),
(9, 'Maria', 14),
(10, 'Andy', 11);
您需要在「費用表」中找到每位教練的最高金額(費用)並返回ID作爲自己的記錄集。然後從記錄集中,您可以進行內部連接,以獲取與正確的受訓者相關的姓名和費用。 – abraxascarab
您的輸出與您的查詢輸出有什麼不同?你還使用了什麼RDBMS? –
它確定傑克是2110費用的實習生,而不是安迪 – Danny