2012-12-26 24 views
0

連接的表,我有三個表在我的數據庫交叉聯接和左外部數據庫中

EMPLOYEE表

  • 僱員(PK)

問題表

  • 脈衝Qid (PK)
  • 問題

問卷

  • QuestionnaireId (PK)
  • QID (FK)
  • 僱員(FK)
  • 響應
  • 詳細

這是SQL查詢,我寫我自己,但它產生的是我不需要

Select q.qid,e.employeeId, q.Question, eq.response 
from employee e 
cross join Question q 
left outer join employeequestionnaire eq on q.Qid= eq.Qid 
where e.employeeId = 1 
輸出

這是輸出

   Qid EmployeeId  Question  Response 
      "1"  "1"   "Question1"  "0" 
      "1"  "1"   "Question1"  "1" 
      "2"  "1"   "Question2"  "1" 
      "2"  "1"   "Question2"  "0" 
      "3"  "1"   "Question3"  "1" 
      "4"  "1"   "Question4"  NULL 

但我需要這種輸出的

   Qid EmployeeId  Question  Response 
      "1"  "1"   "Question1"  "0" 
      "2"  "1"   "Question2"  "1" 
      "3"  "1"   "Question3"  "1" 
      "4"  "1"   "Question4"  NULL 

我在SQL是一個新手,我的示例查詢抱歉..

+0

東西肯定是不對您的輸出或與您的查詢,因爲它們中的一個'EmployeeID'作爲一個數字,而另一個作爲一個字符串。 – 2012-12-26 14:13:03

+0

我在想你可能會在這裏錯過一個必要的表格。您可能應該有一張表格,用於定義問卷中的哪些問題以及另一張表格來存儲回覆。否則,如果某人不回答所有問題(希望明確..),就不可能知道問卷中有哪些問題。) –

+0

@JackManey - 對不起,我把一個錯誤的標題與輸出 –

回答

0

假設employeequestionnaire有僱員ID字段,你不需要employee表。我認爲你可以這樣做:

Select q.qid, eq.employeeId, q.Question, eq.response 
from Question q left outer join 
    employeequestionnaire eq 
    on q.Qid= eq.Qid and 
     eq.employeeId = 1 

請注意,我感動where條款爲on條款。這在使用left outer join時有時是必需的。

如果你想包括有關從該表中員工的信息,你可以使用不使用cross join

Select q.qid, eq.employeeId, q.Question, eq.response 
from Question q left outer join 
    employeequestionnaire eq 
    on q.Qid= eq.Qid and 
     eq.employeeId = 1 left outer join 
    employees e 
    on e.EmployeeID = eq.EmployeeID 
+0

哇,很好,謝謝,它的工作原理! –