2017-03-02 76 views
0

我需要的输出,将显示TripName,[类型],名字,姓氏和[NumberOfGuides]从这个查询,但我得到一个错误,指出:错误使用子查询

“消息512,级别16,状态1,行2子查询返回多个1个 值。子查询如下=,!=,<,< =,

,> =,或当子查询时,这是不允许的用作表达“。

select TripName, [Type], FirstName, LastName, (select count(*) 
from Guide g, TripGuide tr, Trip t 
where g.GuideNum = tr.GuideNum and t.TripID = tr.TripID 
group by TripName, Type 
having count(*) > 1) as [NumberOfGuides] 
from Guide, Trip 
order by NumberOfGuides desc 
+1

请在您的问题中标记正确的RDMBS。 – Igor

+0

查询的目标是什么?你要看什么?你的每个柱子从哪里来?我们不能告诉 – kbball

+1

[SQL Server子查询可能重复返回多个值。这是不允许的,当子查询遵循=,!=,<, <= , >,> =](http://stackoverflow.com/questions/2653188/sql-server-subquery-returned-more-than-1-value-this-is -n--s-s) –

回答

0

即使我不能精确解读您的查询,从子查询搬出count的:

select TripName, [Type], FirstName, LastName, count(
    select * 
    from Guide g, TripGuide tr, Trip t 
    where g.GuideNum = tr.GuideNum and t.TripID = tr.TripID 
    group by TripName, Type 
    having count(*) > 1) as [NumberOfGuides] 
from Guide, Trip 
order by NumberOfGuides desc 

除此之外似乎还有在一个逻辑错误子查询,因为没有与顶级查询的链接。

所以我想列NumberOfGuides总是报告相同的价值。

+0

感谢您的回应,但它仍然无法正常工作。当我单独运行子查询时,它会执行并显示正确的输出。但是,如果我尝试加入TripName,[类型],名字,姓氏,它会给出错误 –

+0

对不起,但您的评论听起来像是一件容易的事。 很明显,您的查询存在许多缺陷,我的答案突出显示了宏观问题。 我建议你开始深入研究你试图实现的机制。例如,只是看看相关的帖子:我只看到[加入与子查询](http://stackoverflow.com/questions/2577174/join-vs-sub-query)。或者看一下@RicardoC建议的链接(其标志可能会明确地说明此事)。 – rfb

0

我不明白显示指南的数量的要求,您已经显示可用的指南名称。通常对于这种类型的结果列,导游的数量将为1,因为该行程将只有1个指南,其中可以提供姓名和姓氏。如果您能向我们提供您所期望的要求目标和样本要求的结果,将对您有所帮助。