我是 SQL 新手,在格式化方面有一些问题。在第 1 列中,我有生活、食物、交通等类别,在每个类别中,我都有子类别。例如,food.lunch、food、grocery。
现在我想要一个名为详细费用的新列,我想在其中显示 CATEGORY.SUBCATEGORY
例如,food.lunch
我怎样才能做到这一点?有什么帮助吗?
我是 SQL 新手,在格式化方面有一些问题。在第 1 列中,我有生活、食物、交通等类别,在每个类别中,我都有子类别。例如,food.lunch、food、grocery。
现在我想要一个名为详细费用的新列,我想在其中显示 CATEGORY.SUBCATEGORY
例如,food.lunch
我怎样才能做到这一点?有什么帮助吗?
这个想法怎么样:您可以有一个表 Expenses,其中包含用于标识类别和子类别的记录的金额。然后,您可以按类别或子类别合计 (SUM) 金额。
SELECT Category.Name,SubCategory.Name,SUM(Expense.Amount)
FROM Expense ex INNER JOIN Category cat on (ex.CategoryId = cat.Id)
INNER JOIN SubCategory subcat on (ex.SubCategoryId = subcat.Id)
GROUP BY cat.Name, subcat.Name,ex.Amount
CREATE TABLE Category(
Id int NOT NULL PRIMARY KEY,
Name varchar(50) NOT NULL
PRIMARY KEY (Id),
)
CREATE TABLE SubCategory(
Id int NOT NULL PRIMARY KEY,
CategoryId int,
Name varchar(50) NOT NULL
PRIMARY KEY (Id),
FOREIGN KEY (CategoryId) REFERENCES Category(Id))
CREATE TABLE Expense(
ID NOT NULL PRIMARY KEY,
CategoryId int,
SubCategoryId int,
Amount money
PRIMARY KEY (Id),
FOREIGN KEY (CategoryId) REFERENCES Category(Id)
FOREIGN KEY (SubCategoryId) REFERENCES SubCategory(Id))
您需要像这样构造您的表(不是 OOP 方法)
categories
-----------------------
id name parent
1 food 0
2 lunch 1
...
3 category 0
4 subcategory 3