SQL - 使用外键的复杂查询

时间:2013-06-09 09:01:32

标签: sql

所以,我对SQL很陌生,但我从我所学的课程中得到的这本书是无用的,我正在尝试为这门课程做一个项目。互联网并没有帮助我这么多(我不知道从哪里开始),所以我想要两个好的教程链接来检查以及帮助解决一个非常具体的问题。

如果我说的不够清楚,请让我解释一下! :)

假设数据库中有两个表salep_sale,名为jewel_store

sale包含两列:sale_CODEsale_date

p_sale包含sale_CODE,其中引用了上述sale_IDp_IDp_sl_quantityp_sl_value

sale_CODEsale的主键,sale_CODE,p_IDp_sale的主键

目前p_ID并没有多大用处,所以请大家忽略它。

p_sl_quantityintp_sl_valuedouble(8,2)。第一个是购买产品的数量,第二个是产品的 PER UNIT 值。

由于很明显sale_CODE可以链接到p_sale表中的众多条目(例如sale_CODE 1,我在p_sale上有2个条目)。

所有这些都是基于我从任务中获得的内容并且已正确实现并且具有一些示例值。

我现在要做的是查找特定月份的销售总收入。我最初的方法是逐步开始构建所有内容,所以我已经达到了如下所示:

SELECT SUM(p_sl_value * p_sl_quantity) AS sales_monthly_income, p_sale.sale_CODE FROM jewel_store.p_sale GROUP BY p_sale.sale_CODE

这可能只有一半,因为我可以获得为商店生成的销售总额。所以我的下一步是使用此查询和SELECT。我已经把它搞砸了几次,现在我正在挠头。我做的是这样的:

SELECT
    SUM(sales_monthly_income),
    sales_monthly_income,
    EXTRACT(MONTH FROM jewel_store.sale.sale_date) AS sales_month
FROM (
SELECT
    SUM(p_sl_value * p_sl_quantity) AS sales_monthly_income,
    sale_CODE
FROM jewel_store.p_sale
GROUP BY sale_CODE
) as code_income, jewel_store.sale
GROUP BY sales_month

首先,我只需要以最终形式打印total_montly_incomemonth列,但我用这个来澄清那里的一切都出错了。我想我需要以某种方式使用引用另一个表的外键,但我的书完全没用来帮助我。我希望有人解释为什么这是错误的,正确的是什么,请指出一个好的pdf,网站或任何东西来学习如何做这种东西。 (我已经检查了W3SCHOOLS,这对基础知识有好处,但对于太高级的东西却没有用)

提前致谢!

1 个答案:

答案 0 :(得分:1)

从我的头脑中,这可能是它,逐个月的价值总和数量。

SELECT
    SUM(p.p_sl_value * p.p_sl_quantity) AS sales_monthly_income,
    month(s.sale_date)
FROM p_sale p
inner join sale s on s.sale_code = p.sale_code
GROUP BY MONTH(s.sale_date)