2017-02-21 62 views
0

我正在尝试构建员工管理系统。该系统在JAVA和数据库Oracle中具有服务器代码。从Java端我传递三个元素日期列表,位置列表和日期列表行号列表Oracle

现在我有1个表,其中包含适用于特定位置的Shifts的所有条目。

例如,如果位置1有两个班次1,2,而位置2有两个班次1,3,则表格将如下所示。

Location | Shift 
     1 | 1 
     1 | 2 
     2 | 1 
     2 | 3 

现在我想的是,当我通过从Java日期列表(2017年1月1日,2017年1月2日)我的查询应返回表结构应如下。

Date  | Location | Shift 
01-01-2017 |  1 | 1 
01-01-2017 |  1 | 2 
01-01-2017 |  2 | 1 
01-01-2017 |  2 | 3 
01-02-2017 |  1 | 1 
01-02-2017 |  1 | 2 
01-02-2017 |  2 | 1 
01-02-2017 |  2 | 3 

请建议查询。

请注意,日期字段不是任何表的一部分,列表大小可能因呼叫而异。

在此先感谢

+0

日期是第一个表中的列吗? – Biswabid

+0

你如何将你的列表从Java传递给Oracle?你真的只是传递两个值,一个开始和结束日期;或者可能有两个以上?传递哪些数据类型以及表列? –

+0

日期列表大小是动态的,日期不是任何表的一部分 – Jaydip

回答

0

以下查询应该工作我猜:

SELECT DATESTABLE.DATES,LOCATIONS, SHIFTS 
FROM LOCATIONSTABLE 
INNER JOIN 
(
SELECT '01-01-2017' 
UNION ALL 
SELECT '01-02-2017' 
) DATESTABLE 
ON 1 = 1; 

您可以使用ORDER BY相应命令。

+0

'...内部连接... on 1 = 1'最好写成'...交叉连接...' - 这样显然交叉连接是有意的,而不是某个人忘记了添加实际的连接条件。 – mathguy