RATE THIS ANSWER
0
Click to Vote:
0
0
I would take Carlosdl advise and read up. Here is how I would do this:
CREATE TABLE department(
departmentId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
departmentNumber VARCHAR(16),
departmentName VARCHAR(64) NOT NULL,
isEnabled TINYINT NOT NULL
);
CREATE TABLE course(
courseId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
departmentId INT NOT NULL,
courseNumber VARCHAR(16),
courseName VARCHAR(64) NOT NULL,
isEnabled TINYINT NOT NULL
);
CREATE TABLE budget(
budgetId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
courseId INT NOT NULL,
budgetYear INT NOT NULL,
totalBudget DECIMAL(10,2) NOT NULL,
budgetBalance DECIMAL(10,2) NOT NULL
);
To add a department:
INSERT INTO department(departmentNumber, departmentName, isEnabled)
VALUES('1023', 'Humanities', 1);
Note: I don't IDs or numeric types for things like department numbers because they can change and could change to something non numeric.
To add a course:
INSERT INTO course(departmentId, courseNumber, courseName, isEnabled)
VALUES(1, '1026', 'English 101', 1);
To add a budget:
INSERT INTO budget(courseId, budgetYear, totalBudget, budgetBalance)
VALUES(1, 2010, 500.00, 500.00);
To deduct from their budget:
UPDATE budget SET budgetBalance = budgetBalance - 50.00 WHERE budgetId = 1;
If you don't have the budget id you could:
UPDATE budget b, course c, department d
SET b.budgetBalance = b.budgetBalance - 100.00
WHERE b.budgetYear = 2010 AND b.courseId = c.courseId AND c.departmentId = d.departmentId AND c.courseName = 'English 101' AND d.departmentName = 'Humanities';
To get a budget report:
SELECT d.departmentNumber, d.departmentName, c.courseNumber, c.courseName, b.budgetYear, b.totalBudget, b.budgetBalance
FROM budget b
INNER JOIN course c ON b.courseId = c.courseId
INNER JOIN department d ON c.departmentId = d.departmentId
ORDER BY d.departmentName, c.coursename, b.budgetYear
To get a report for a single course:
SELECT d.departmentNumber, d.departmentName, c.courseNumber, c.courseName, b.budgetYear, b.totalBudget, b.budgetBalance
FROM budget b
INNER JOIN course c ON b.courseId = c.courseId
INNER JOIN department d ON c.departmentId = d.departmentId
WHERE courseName = 'English 101'
ORDER BY d.departmentName, c.coursename, b.budgetYear
You can keep changing out that field in the where statement to be able to pull rusults by different fields.
Last Answered:
Jan 23 2010 6:42 PM GMT by Gent01 
1525 pts.