Sql 在Oracle DBMS中使用多个嵌套查询

Sql 在Oracle DBMS中使用多个嵌套查询,sql,oracle,Sql,Oracle,我想选择在market类型的商店中,在两个时间范围内工作的所有员工的联系信息电子邮件和电话号码,并且当前有两名以上的员工在一起工作 我想做的是:我有一个实体雇员,它是另一个实体计划的所有者实体,我有一个shopn属性为EMPLOYEE外键的SHOP实体 我的尝试: SELECT Email, Phonenumber FROM EMPLOYEE WHERE COUNT( ID = (SELECT ID_Num FROM SCHEDULE

我想选择在market类型的商店中,在两个时间范围内工作的所有员工的联系信息电子邮件和电话号码,并且当前有两名以上的员工在一起工作

我想做的是:我有一个实体雇员,它是另一个实体计划的所有者实体,我有一个shopn属性为EMPLOYEE外键的SHOP实体

我的尝试:

SELECT Email, Phonenumber  
FROM EMPLOYEE  
WHERE COUNT(  
        ID = (SELECT ID_Num  
            FROM SCHEDULE     
            WHERE Start_Time <= 12:07 AND End_Time >= 12:07)  
    AND Shopn = (SELECT Shopname  
            FROM SHOP  
            WHERE Shoptype = ‘market’)
    ) > 2
我得到ORA-00934错误 任何帮助都将不胜感激。

您的疑问:

SELECT Email, Phonenumber
FROM EMPLOYEE
WHERE COUNT(
ID = (SELECT ID_Num
FROM SCHEDULE
WHERE Start_Time <= 12:07 AND End_Time >= 12:07)
AND Shopn = (SELECT Shopname
FROM SHOP
WHERE Shoptype = ‘market’) ) > 2
问题:

似乎您正在尝试使用=运算符选择id,如果内部查询返回多个条目,则该运算符将失败。 不能在where子句中添加聚合运算符。 可能的答案:

select Email, Phonenumber
FROM EMPLOYEE
WHERE ID in (SELECT ID_Num
FROM SCHEDULE
WHERE Start_Time <= '12:07' AND End_Time >= '12:07')
AND Shopn in (SELECT Shopname
FROM SHOP
WHERE Shoptype = 'market')
and (  
select count(distinct id)
FROM EMPLOYEE
WHERE ID in (SELECT ID_Num
FROM SCHEDULE
WHERE Start_Time <= '12:07' AND End_Time >= '12:07')
AND Shopn in (SELECT Shopname
FROM SHOP
WHERE Shoptype = 'market')) > 2;

这段代码中的错误太多了。让我们从最简单的开始。12:07应该在你的代码中是什么?它是一根绳子吗?然后用单引号引起来。开始时间和结束时间的数据类型是什么?它们是弦吗?如果是的话。。。坏主意!它们是varchar类型,我想它不会比较,所以我只放了equal,它给了我一个错误,把12:07放在单引号中,所以它也是一个字符串。那么:hh24:mi格式中的开始时间和结束时间是指上午4:45的“04:45”和下午3点的“15:00”吗?如果不是,例如:如果一位数的小时数没有前导0,那么您的比较将无法按预期进行。是的,他们与您相似said@mathguy有没有关于进一步错误的想法?由于这些更改无法修复它,当我尝试按原样运行它时,我得到一个奇怪的windows提示,尝试在时间之间加引号,因为它们是varchar,并且我得到的命令没有正确结束,请尝试加引号;错误仍然存在,不应使用“市场”尝试使用传统的qoutes我已经编辑了脚本,如果问题进一步存在,请删除最后一个条件并运行。让我知道我自己已经做了,因为我已经注意到了,我得到的命令没有正确结束,我尝试删除WHERE Shoptype='market',并得到了相同的结果,无论我是保持原样还是添加一个声明;在结尾处是的,我想你在结尾处遗漏了一个半列。我自己加的,结果还是一样的,这就是我刚才说的