我有两个相关产品表格和第三个不相关的时期表格,我想用它们来确保我得到一整套返回的数据。将两个表格与第三个无关表格结合
我不想存储每个产品的所有空闲时段,只是出售时段。
首先,我们的财务表,这是所有时期的“主人”:
ID | PERIOD
------------
1 | Jan
2 | Feb
3 | Mar
然后将产品和销售表
ID | Code
------------
1 | ABC
2 | XYZ
Product_ID | Period_ID | Sales
------------------------------
1 | 1 | 5
2 | 1 | 4
2 | 3 | 7
我想制定一个查询以便我可以返回每个期间的结果,而不管它们是否有销售额:
Product_ID | Product_Code | Period_ID | Period_Name | Sales
-----------------------------------------------------------
1 | ABC | 1 | Jan | 5
1 | ABC | 2 | Feb | 0
1 | ABC | 3 | Mar | 0
2 | XYZ | 1 | Jan | 4
2 | XYZ | 2 | Feb | 0
2 | XYZ | 3 | Mar | 7
我需要查询尽可能通用,它需要针对Firebird(1.5)和MS SQL。如果这是不可能的,那么MS SQL是首选。
次要的是,如果销售表中有一段时间以上的条目,总数是否可以合计?即:
Product_ID | Period_ID | Sales
------------------------------
1 | 1 | 1
1 | 1 | 1
能够为这一特定的线路返回
Product_ID | Period_ID | Sales
------------------------------
1 | 1 | 4
。
我试图做一个连接,但我看不到如何让它加入每个产品的周期表中的信息。
谢谢,这对MS SQL有效。火鸟1.5没有CROSS JOIN命令,有没有更不可知的方式来做到这一点?另外什么是最好的索引优化,它首次运行速度很慢。 – Darren
而不是'CROSS JOIN'尝试:'从财务f,产品p'。 –
或'从财务内部加入产品p ON 1 = 1' –