2010-03-18 48 views
0

我有3個臺A,B和C.需要與許多條件

  • 表A已列employee_name,ID
  • 表B是主表和具有列ID讀取來自Oracle數據庫數據, os版本。
  • 表c具有列id,包id和p_version。

我想查詢employee_name的計數,其中表a和c的id與表b(它是主表)的id相匹配。

我也應該得到他們擁有的操作系​​統版本和p_version分組的員工姓名。

我都試過了,

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

我想員工姓名的計數由os.version和p_version進行分組。

+0

請添加你到目前爲止嘗試過的東西。 – 2010-03-18 09:10:26

+0

是什麼問題?我的意思是,這是一個「初學者的SQL」的東西,你不要提出一個問題來回答開始。 – TomTom 2010-03-18 09:11:06

回答

0

我不太確定我明白你的要求..以下是一個盲目的猜測。

我不太確定表c應該如何連接到表b,btw ..不知何故架構不會讓我感覺很多!

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 
+0

其給出ora-00936錯誤。 – randeepsp 2010-03-18 09:49:31

+0

ora-00936(缺失的表達)本身毫無意義......它還說了些什麼? – lexu 2010-03-18 10:22:56

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中的問題。如果它實際上有下劃線或其他東西,則忽略引號。