SQLite:使用公共引用 ID 从两个表中获取输出
SQLite: Get Output From Two Tables Using Common Reference ID
我是 SQLite 的新手,我已经研究一个问题很长时间了。
假设我们有 2 个数据库 table 说 tbl_expense 和 tbl_category。请在下面找到以下 table 结构。
tbl_category
CREATE TABLE IF NOT EXISTS tbl_category(
category_id INTEGER PRIMARY KEY AUTOINCREMENT,
category_name VARCHAR(20) DEFAULT NULL,
category_desc VARCHAR(500) DEFAULT NULL,
category_icon VARCHAR(100) DEFAULT NULL,
category_created timestamp default CURRENT_TIMESTAMP
)
tbl_expense
CREATE TABLE IF NOT EXISTS tbl_expense(
expense_id INTEGER PRIMARY KEY AUTOINCREMENT,
expense_name VARCHAR(20) DEFAULT NULL,
expense_desc VARCHAR(500) DEFAULT NULL,
expense_type VARCHAR(20) DEFAULT NULL,
expense_amt DECIMAL(6.3) DEFAULT NULL,
expense_date TIMESTAMP DEFAULT NULL,
expense_category INTEGER DEFAULT NULL,
expense_created_date timestamp DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (expense_category) REFERENCES tbl_category(category_id)
ON DELETE SET NULL
)
假设我们有如下 table 中的数据。
预期输出:
确保我们有 category_id 和 expense_category 作为公共字段。我如何创建一个 SQL 查询,我可以在其中列出所有类别及其费用金额的总和,如下所示。
请帮我解决这个问题。
您需要 INNER
连接 table 和聚合:
SELECT c.category_name Category,
SUM(e.expense_amt) Amount
FROM tbl_category c INNER JOIN tbl_expense e
ON e.expense_category = c.category_id
GROUP BY c.category_id;
如果您想要 table tbl_category
中的所有类别,甚至 tbl_expense
中不存在的类别,请使用 LEFT
连接和 TOTAL()
聚合函数:
SELECT c.category_name Category,
TOTAL(e.expense_amt) Amount
FROM tbl_category c LEFT JOIN tbl_expense e
ON e.expense_category = c.category_id
GROUP BY c.category_id;
我是 SQLite 的新手,我已经研究一个问题很长时间了。
假设我们有 2 个数据库 table 说 tbl_expense 和 tbl_category。请在下面找到以下 table 结构。
tbl_category
CREATE TABLE IF NOT EXISTS tbl_category(
category_id INTEGER PRIMARY KEY AUTOINCREMENT,
category_name VARCHAR(20) DEFAULT NULL,
category_desc VARCHAR(500) DEFAULT NULL,
category_icon VARCHAR(100) DEFAULT NULL,
category_created timestamp default CURRENT_TIMESTAMP
)
tbl_expense
CREATE TABLE IF NOT EXISTS tbl_expense(
expense_id INTEGER PRIMARY KEY AUTOINCREMENT,
expense_name VARCHAR(20) DEFAULT NULL,
expense_desc VARCHAR(500) DEFAULT NULL,
expense_type VARCHAR(20) DEFAULT NULL,
expense_amt DECIMAL(6.3) DEFAULT NULL,
expense_date TIMESTAMP DEFAULT NULL,
expense_category INTEGER DEFAULT NULL,
expense_created_date timestamp DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (expense_category) REFERENCES tbl_category(category_id)
ON DELETE SET NULL
)
假设我们有如下 table 中的数据。
预期输出:
确保我们有 category_id 和 expense_category 作为公共字段。我如何创建一个 SQL 查询,我可以在其中列出所有类别及其费用金额的总和,如下所示。
请帮我解决这个问题。
您需要 INNER
连接 table 和聚合:
SELECT c.category_name Category,
SUM(e.expense_amt) Amount
FROM tbl_category c INNER JOIN tbl_expense e
ON e.expense_category = c.category_id
GROUP BY c.category_id;
如果您想要 table tbl_category
中的所有类别,甚至 tbl_expense
中不存在的类别,请使用 LEFT
连接和 TOTAL()
聚合函数:
SELECT c.category_name Category,
TOTAL(e.expense_amt) Amount
FROM tbl_category c LEFT JOIN tbl_expense e
ON e.expense_category = c.category_id
GROUP BY c.category_id;