這是帶有完整問題的已編輯問題。以下是表格結構。 (以下僅列出必要的欄。)在where子句中使用逗號分隔的值並將其與in子句進行比較
表名:tblQualificationMaster
。
Qualiid QualiName
------- ---------
1 S.S.C
2 H.S.C
3 B.Sc
4 M.C.A
5 M.Sc(IT)
6 B.E
7 M.B.A
8 B.Com
9 M.E
10 C.S
12 M.Com
表名:tblAppResumeMaster
。
AppId FirstName LastName TotalExpYears TotalExpMonths
----- --------- -------- ------------- --------------
1 Rahul Patel 7 0
2 Ritesh Shah 0 0
3 Ajay shah 7 6
4 Ram Prasad 7 6
5 Mohan Varma 5 0
6 Gaurav Kumar 8 0
表名:tblAppQualificationDetail
。 (爲了更好的閱讀我的除了第一行,但在我的數據庫中的所有行的所有值都存儲像appid=1
寫逗號分隔值即每一行對應一個qualificationid
。)
Appid QualiId
----- -------
1 1
1 2
1 3
1 4
2 1,2,3
3 1,2,6
4 1,2,3,5
5 1,2,3,4
6 1,2,6,9
表名:tblVacancyMaster
VacId Title Criteria Req.Exp KeySkills
----- -------------- -------- ------- ---------------
1 Programmer 4,5,6 4 .net,java,php
2 TL 4,5 3 .net,java,php
3 Project Mngr. 4,6,9 4 .net,java,php,sql
4 Java Developer 4,5,6 0 java,oracle,sql
5 Manager 7,9 7 bussiness management
6 Supervisior 3,8 3 marketing
7 PHP Developer 4,5 0 php,mysql,send
現在基於這個細節我想創建應該有下列字段的視圖。 (它顯示了VacId=1
但我需要這對所有空缺,這樣我可以解僱在那裏這種觀點就像select * from view where VacId=3
條款。)
AppId FirstName LastName QualiName QualiId TotalExp VacId VacTitle
----- --------- -------- --------- ------- -------- ----- ----------
1 Rahul Patel M.C.A 4 7 1 Programmer
3 Ajay Shah B.E. 6 7 1 Programmer
5 Mohan Verma M.C.A 4 5 1 Programmer
6 Gaurav Kumar B.E 6 8 1 Programmer
6 Gaurav Kumar M.E 9 8 1 Programmer
該視圖顯示的AppId 1,3,5和6有資格獲得空位3但它顯示應用程序6的重複條目。我如何獲得唯一記錄?
我在數據庫設計中可能是錯誤的,因爲這是我的第一個項目,我正在學習數據庫,因此,如果出現違反數據庫標準的情況,請告訴我並糾正錯誤。
我以前的查詢 (注:此前我使用一箇中間表其爲具有列VacId
tblVacancyCriteriaDetail
和QualiId
和我的表tblVacancyMaster
是沒有列標準)
select
ARM.AppId,
ARM.AppFirstName,
ARM.AppLastName,
ARM.AppMobileNo,
AQD.QualiId,
VacQualiDetail.QualiName,
ARM.AppEmailId1,
VacQualiDetail.VacID,
ARM.TotalExpYear,
VacQualiDetail.VacTitle,
VacQualiDetail.DeptId,
VacQualiDetail.CompId,
CM.CompName
from
tblAppResumeMaster ARM,
tblAppQualificationDetail AQD,
tblCompanyMaster CM,
(
select
VM.VacID,
VM.VacTitle,
VM.CompId,
VM.DeptId,
vcd.QualificationID,
QM.QualiName,
VM.RequiredExperience as Expe
from
tblVacancyCriteriaDetail VCD,
tblVacancyMaster VM,
tblQualificationMaster QM
where VCD.VacID=VM.VacID
and VCD.QualificationID=QM.QualificationId
and VM.Status=0
) as VacQualiDetail
where AQD.AppId=arm.AppId
and aqd.QualiId=VacQualiDetail.QualificationID
and ARM.TotalExpYear>=Expe
and cm.CompId=VacQualiDetail.CompId
您正在使用哪些DBMS? –
@a_horse_with_no_name SQL SERVER 2008 R2 –
我沒有針對SQL Server的解決方案,但您應該重新考慮設計。您違反了關係數據庫設計的基本原則,這就是爲什麼這個問題如此複雜以至於無法解決。 –