2010-10-05 63 views
0

選擇一個二維數據有下列數據的SQL Server表:我如何從SQL Server

PrimaryKey ForeignKey DataType Value 
1   1   Actor  abc 
2   1   Movie  efg 
3   1   Movie  hij 
4   2   Actor  mno 
5   2   Movie  pqr 
6   2   Movie  stu 
7   2   Movie  vwx 

我要選擇從該表中的數據並加載Csharp的類,命名爲Actors。這個班級有一個名爲ActorName的房產,以及演員的一系列電影。基本上,我必須在Value列中填充ActorName,並從Value列中收集actor的所有電影名稱並填充集合。我不知道該怎麼做,特別是如何編寫適當的sql select語句。

謝謝

+0

我的理解是你有演員和電影在同一張表嗎?另外,外鍵與什麼有關? – 2010-10-05 10:07:11

+2

您可能需要重構您的數據庫 – 2010-10-05 10:10:26

+0

我可以知道演員和他的電影之間的關係在哪裏? – Geeth 2010-10-05 10:22:03

回答

0

正如其他人指出的,你需要重構你的數據庫。如果這是不可能的,你可以發出下面的SQL語句,它採用了自連接

SELECT actors.Value AS Actor, movies.Value AS Movie 
FROM TableName actors, TableName movies 
WHERE actors.DataType='Actor' 
AND movies.DataType='Movie' 
AND actors.ForeignKey = movies.ForeignKey 

這將返回象

Actor Movie 
abc  efg 
abc  hij 
mno  pqr 
mno  stu 
etcetera 
0

東西使一些SQL表。

1-影(MovieID,MOVIE_NAME)

2-演員(actorId來,MovieId,ACTOR_NAME)

這兩個表應該有關係。 Actors.MovidId應該連接到Movies.MovieId。我建議你使用LinQ

var retVal =(從dataContext.Movies中的s中選擇s).ToList();

retVal的返回你Movies表,這意味着你有MovieId,MOVIE_NAME

,然後你可以用這個列表什麼。這裏檢查101 LinQ Samples

+0

我不會把MovieId放在Actors表中。會更好地有一個鏈接表:MovieId,ActorId – PaulG 2010-10-05 10:46:37

+0

@PaulG我知道,有很多方法可以做到這一點。你是對的,這可以是解決方案:)我只是建議一個scenerio – 2010-10-05 10:49:59