Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较Oracle SQL中表之间的范围_Sql_Oracle_Oracle11g_Oracle Sqldeveloper - Fatal编程技术网

比较Oracle SQL中表之间的范围

比较Oracle SQL中表之间的范围,sql,oracle,oracle11g,oracle-sqldeveloper,Sql,Oracle,Oracle11g,Oracle Sqldeveloper,我有两张桌子,中间的和中间的。根据表1中的中心ID,我需要找到相应的ID 例如,如果Centreid是2000,那么它应该显示100。表1中所有记录的显示方式相同 我发现写这个查询很困难 你能在这方面指导我吗 DEPT Center_Id 10 2000 10 2001 20 3001 20 2580 CENTER_FROM CENTER_TO ALLOCATION_ID 1999 2499 a100 2500

我有两张桌子,中间的和中间的。根据表1中的中心ID,我需要找到相应的ID

例如,如果Centreid是2000,那么它应该显示100。表1中所有记录的显示方式相同

我发现写这个查询很困难

你能在这方面指导我吗

DEPT    Center_Id
10  2000
10  2001
20  3001
20  2580


CENTER_FROM     CENTER_TO   ALLOCATION_ID
1999              2499       a100
2500              2999       b234
3000              3499       c199

谢谢

您可以
加入
这些表,这样一个表的中心id在另一个表的中心自和中心至之间

select c.dept,c.center_id,rc.allocation_id
from center c
join range_center rc on c.center_id between rc.center_from and rc.center_to

您可以
join
这些表,以便一个表的中心id在另一个表的中心和中心之间

select c.dept,c.center_id,rc.allocation_id
from center c
join range_center rc on c.center_id between rc.center_from and rc.center_to

如果不喜欢联接,则可以使用关联子查询:

SELECT c.DEPT, c.Center_Id,
       ( SELECT ALLOCATION_ID FROM RANGE_CENTER r
         WHERE c.Center_Id BETWEEN r.CENTER_FROM AND r.CENTER_TO
       ) As ALLOCATION_ID
FROM CENTER c

如果不喜欢联接,则可以使用关联子查询:

SELECT c.DEPT, c.Center_Id,
       ( SELECT ALLOCATION_ID FROM RANGE_CENTER r
         WHERE c.Center_Id BETWEEN r.CENTER_FROM AND r.CENTER_TO
       ) As ALLOCATION_ID
FROM CENTER c

您好,有没有其他不使用联接的方法可以编写代码。您可以使用带有硬编码范围的
case
表达式。@Mani-对于具有两个表的查询,不使用联接是一个非常特殊的要求。你需要证明限制的合理性。不,这不是客户方的要求。连接一列对我来说是一个小问题,因为我没有提到表的完整结构。如果可能的话,请让我知道,有没有其他方法不使用联接就可以编写。您可以使用带有硬编码范围的
case
表达式。@Mani-对于具有两个表的查询,不使用联接是一个非常特殊的要求。你需要证明限制的合理性。不,这不是客户方的要求。一列上的连接对我来说是一个小问题,因为我没有提到表的完整结构。如果可能的话,请让我知道这很好,我只需要限制在子查询中返回多个值的行。我正在从子查询中指定多行,我只需要显示那些正在检索单行的行。该错误意味着,
RANGE\u CENTER
包含重叠的范围。在这种情况下,唯一的方法是连接两个表。这很好,我只需要限制在子查询中返回多个值的行:我正在从子查询中指定多个行,我只需要显示检索单行的行。错误意味着,
RANGE\u CENTER
包含重叠的范围。在这种情况下,唯一的方法是连接两个表。