我需要爲每星期等時刻表顯示單個用戶時間表,多重列值的where子句
場景:教師被分配給多個批次單週(如:BBA,數學和午前爲小時1和2)&(MBA,Maths,Forenoon for Hour 3 & 4)在同一日期說(30-06-2015)。我gridview的行將存儲爲1和2行作爲商店2等等。 .......
我的表定義:
CREATE TABLE [dbo].[test] (
[datedif] NVARCHAR (50) NOT NULL,
[hour] INT NULL,
[subject] NVARCHAR (MAX) NULL,
[faculty] NVARCHAR (MAX) NULL,
[attendence] BIT NULL,
[dayweek] NVARCHAR (50) NULL,
[weekmonth] NVARCHAR (MAX) NULL,
[batch] NVARCHAR (MAX) NULL,
[section] NVARCHAR (MAX) NULL,
[session] NVARCHAR (MAX) NULL
);
表如下所示:
Datefdiff | hour | subject | faulty| batch
----------+-------+----------+---------+-------+----------+--------+-------+----------+---------+-------
30-06-2015| 1| Maths | Kevin | BBA
30-06-2015| 2| Science | Amal | MBA
30-06-2015|3 | chemistry|Jaya |BBA
30-06-2015|4 | chemistry|Jaya |BBA
30-06-2015|5 | chemistry|Jaya |BBA
31-06-2015 |1| science | Amal |BBA
31-06-2015 |2| Maths | kevin |BBA
31-06-2015 |3| Science | Amal |BBA
31-06-2015 |4 | chemistry|Jaya |BBA
31-06-2015 |5| science | Amal |BBA
預計產量爲僅系給出:阿邁勒
Datefdiff |hour|subject| batch |hour|subject | batch |faculty|hour | subject | batch | hour | subject | batch| hour | subject | batch |
----------+-------+----------+-------+-------+----------+-------+-------+----------+
30-06-2015| 1 | Maths| BBA| 2| Science | MBA | 3| Science | BBA| 4| chemistry| BBA | 5 |Physics |MBA
31-06-2015| 1 | Maths| BBA| 2| Science | MBA | 3| Science | BBA| 4| chemistry| BBA | 5 |Physics |MBA
這是一個糟糕的桌子設計。你不應該存儲數據來模仿某些顯示/表單。數據應該沒有轉移,這樣所有的「主題」數據以*相同*列結尾。然後添加一個額外的列,可以存儲數字1-5,併爲該列指定一個*名稱*,用於解釋數據表示的內容(您當前嵌入表格* metadata *的數據) –
感謝您爲建議,但如果我可以通過在where子句中使用它來顯示教師計劃的詳細信息,那麼這將有所幫助,同時我會嘗試按照您的建議更改表格定義。 – Prhem
在您更改表定義時,請記住日期值應該存儲在日期數據類型中,而nvarchar(max)適用於極長的unicode字符串。既然你的字符串看起來既簡短又簡單,你可以使用varchar(50)或其他任何適合你需要的長度。此外,我會建議您規範化您的數據 - 爲主題提供表格,批處理表格,錯誤表格等等。 –