需要从许多条件的oracle数据库中读取数据

时间:2010-03-18 09:07:51

标签: sql oracle

我有3张桌子A,B和C.

  • 表A具有列employee_name,id
  • 表B是主表,并且具有列id,os版本。
  • 表c具有列id,包id和p_version。

我想查询employee_name的计数,其中表a和c的id与表b的id(主表)匹配。

我还应该获得按照他们的os版本和p_version分组的员工姓名。

我试过了,

select count(employee_name),os.version,p_version where a.id=b.id and b.id=c.id;

我希望通过os.version和p_version对员工姓名进行分组。

2 个答案:

答案 0 :(得分:0)

我不太确定我理解你的要求..以下是盲目猜测。

我不太确定表c应该如何连接到表b,顺便说一句......不管怎样,架构对我来说没有多大意义!

select  b.os
     , c.package_version
     , count(a.employee_name)
from B
  join A  on (b.id=a.id)
  join C  on (b.id=c.id)
group by b.os,c.package_version

答案 1 :(得分:0)

(这个问题对我来说似乎还不清楚,但我会尝试一下:)

如果你已经尝试过

select count(employee_name),os.version,p_version where a.id=b.id and b.id=c.id;

然后我假设这是因为它正确地解决了架构。所以我会尝试这样做:

select "os version", p_version, count(employee_name) 
from a,b,c 
where a.id=b.id and b.id=c.id
group by "os version", p_version;

一个不明确的项目是你的问题是“操作系统版本”。你给它提供了一个空格,所以我猜它的名字中有一个空格。通常情况下不会发生,但如果确实如此,则必须以某种方式引用列名称。我的解决方案可能会解决oracle中的问题。如果它实际上有下划线或其他东西,则忽略引号。