从另一个表中选择具有总和值的查询

JK36

我正在使用SQLite,并具有3个表,项目,发票和订单。我有一个基于项目表的select语句,该语句会选择存储在该表中的字段,但是我还希望特定项目的发票总和和特定项目订单的总和。我知道如何单独获取所有值,但是我还没有弄清楚如何将订单/发票的总和值添加到项目数据行中。是我需要搜索的嵌套选择,还是其他概念?

根据项目表选择

SELECT  project.projectID, project.project_title, project.end_date, project.project_manager, project_status.project_status
FROM project
LEFT JOIN project_status
ON project.project_statusID=project_status.project_statusID
WHERE project.project_statusID BETWEEN 1 AND 12

根据发票表进行选择,其中x将是第一次选择的项目ID

SELECT sum(invoice_net)
FROM invoice
WHERE projectID= x

根据订单表进行选择,其中x是第一次选择时的项目ID

SELECT sum(total_order)
FROM order
WHERE projectID = x
吉姆哈克

您没有提供示例数据,甚至没有提供足够的数据库模式来回答提供所需的确切SQL的答案。

您没有描述发票或订单表。我必须假设它们包含一个ProjectID属性。

您可以使用子选择:

http://www.techrepublic.com/article/use-sql-subselects-to-consolidate-queries/1045787/ https://msdn.microsoft.com/en-us/library/ff487138.aspx

您选择的可能看起来像(未经测试):

SELECT
    project.projectID,
    project.project_title,
    project.end_date,
    project.project_manager,
    project_status.project_status,
    (SELECT sum(invoice.invoice_net) FROM invoice WHERE invoice.projectID = project.projectID),
    (SELECT sum(order.total_order) FROM order WHERE order.projectID = project.projectID)
FROM project
LEFT JOIN project_status
    ON project.project_statusID=project_status.project_statusID
WHERE project.project_statusID BETWEEN 1 AND 12

或加入分组依据。看:

SQL JOIN,GROUP BY对三个表进行总计

您必须将所有未汇总的分组(通常是您从项目表中选择的所有字段),然后将汇总函数(求和)应用于明细属性(invoice_net和total_order)。

像这样(未经测试):

SELECT
    project.projectID,
    project.project_title,
    project.end_date,
    project.project_manager,
    project_status.project_status,
    sum(invoice.invoice_net),
    sum(order.total_order)
FROM project
LEFT JOIN project_status
    ON project.project_statusID=project_status.project_statusID
LEFT JOIN invoice
    ON project.projectID = invoice.projectID
LEFT JOIN order
    ON project.projectID = order.projectID
WHERE project.project_statusID BETWEEN 1 AND 12
GROUP BY project.projectID, project.project_title, project.end_date,
    project.project_manager, project_status.project_status

选择哪一个?性能应该是可比的,但是查询优化器中的弱点可能会导致一个偏爱另一个。如果这很重要,请测试性能。

对于一次性的情况,如果联接表的视图尚不存在,我可能会使用subselect。但是实际上,确实存在或应该存在一个视图,在这种情况下,使用GROUP BY来使用该视图(或根据需要创建视图)是很自然的。

因此,真正的答案变为(未试用):

CREATE VIEW project_order_invoice AS
SELECT
    project.projectID,
    project.project_title,
    project.end_date,
    project.project_manager,
    project_status.project_status,
    invoice.invoice_net,
    order.total_order
FROM project
LEFT JOIN project_status
    ON project.project_statusID=project_status.project_statusID
LEFT JOIN invoice
    ON project.projectID = invoice.projectID
LEFT JOIN order
    ON project.projectID = order.projectID


SELECT
    projectID,
    project_title,
    end_date,
    project_manager,
    project_status,
    sum(invoice_net),
    sum(total_order)
FROM project_order_invoice
WHERE project_statusID BETWEEN 1 AND 12
GROUP BY projectID, project_title, end_date,
    project_manager, project_status

对于该视图,您可能希望包括所有表中的所有属性,但仅ID属性的一个副本除外。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

来自分类Dev

SQL-从另一个表中选择两次具有不同值的列

来自分类Dev

SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

来自分类Dev

从另一个表中选择和拆分列值的 Sql 查询

来自分类Dev

SQL查询以基于另一个表中的列值从一个表中选择

来自分类Dev

如何仅使用一个查询从另一个表中选择两个不同的值?

来自分类Dev

从另一个表中选择一个查询的结果

来自分类Dev

SQL:在某些列中选择具有值的行,并且该值不包含在另一个表中

来自分类Dev

从具有条件的表中选择 DISTINCT 并从另一个表中进行排序

来自分类Dev

努力从另一个表中选择一个值

来自分类Dev

如何使用JOIN从另一个表中选择一个值

来自分类Dev

如何从表中选择数据,在该表中我需要返回在一个字段中具有重复值而在另一个字段中具有指定值的行?

来自分类Dev

从一个表中选择所有列,从另一个表中选择 1 列

来自分类Dev

从选择查询中的另一个表中选择列

来自分类Dev

从多个表中选择,插入另一个表 Oracle SQL 查询

来自分类Dev

MySql:从另一个表中通过其父表的ID获取表的总和,并返回所有具有与parent_id相关的总和值的子级

来自分类Dev

在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

来自分类Dev

SQL查询以选择必须具有另一个表中的所有值作为子字符串的记录

来自分类Dev

MySQL通过比较另一个表中的值从表中选择

来自分类Dev

MySQL通过比较另一个表中的值从表中选择

来自分类Dev

SQL:从不包含来自另一个表的值的表中选择数据

来自分类Dev

Sql从表中选择但使用另一个表值作为where子句

来自分类Dev

MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

来自分类Dev

Laravel 4从子查询中的另一个表中选择列

来自分类Dev

从另一个表中选择数据SQL Select查询

来自分类Dev

MySQL Advanced从另一个表中选择查询检查数据

来自分类Dev

根据另一个表中的引用值从一个表中选择值

来自分类Dev

MySQL查询-从一个表中选择,从另一个表中计数

来自分类Dev

SQL查询-从一个表中选择全部,在另一个表中匹配记录

Related 相关文章

  1. 1

    从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

  2. 2

    SQL-从另一个表中选择两次具有不同值的列

  3. 3

    SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

  4. 4

    从另一个表中选择和拆分列值的 Sql 查询

  5. 5

    SQL查询以基于另一个表中的列值从一个表中选择

  6. 6

    如何仅使用一个查询从另一个表中选择两个不同的值?

  7. 7

    从另一个表中选择一个查询的结果

  8. 8

    SQL:在某些列中选择具有值的行,并且该值不包含在另一个表中

  9. 9

    从具有条件的表中选择 DISTINCT 并从另一个表中进行排序

  10. 10

    努力从另一个表中选择一个值

  11. 11

    如何使用JOIN从另一个表中选择一个值

  12. 12

    如何从表中选择数据,在该表中我需要返回在一个字段中具有重复值而在另一个字段中具有指定值的行?

  13. 13

    从一个表中选择所有列,从另一个表中选择 1 列

  14. 14

    从选择查询中的另一个表中选择列

  15. 15

    从多个表中选择,插入另一个表 Oracle SQL 查询

  16. 16

    MySql:从另一个表中通过其父表的ID获取表的总和,并返回所有具有与parent_id相关的总和值的子级

  17. 17

    在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

  18. 18

    SQL查询以选择必须具有另一个表中的所有值作为子字符串的记录

  19. 19

    MySQL通过比较另一个表中的值从表中选择

  20. 20

    MySQL通过比较另一个表中的值从表中选择

  21. 21

    SQL:从不包含来自另一个表的值的表中选择数据

  22. 22

    Sql从表中选择但使用另一个表值作为where子句

  23. 23

    MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

  24. 24

    Laravel 4从子查询中的另一个表中选择列

  25. 25

    从另一个表中选择数据SQL Select查询

  26. 26

    MySQL Advanced从另一个表中选择查询检查数据

  27. 27

    根据另一个表中的引用值从一个表中选择值

  28. 28

    MySQL查询-从一个表中选择,从另一个表中计数

  29. 29

    SQL查询-从一个表中选择全部,在另一个表中匹配记录

热门标签

归档