2010-09-03 45 views
0

我通過.net應用程序將數據導入到csv表,請幫助我如何插入所有的表,以便我可以查詢;如何插入到sql server多對多的關係表

  1. 學生平均成績的一個問題或測試
  2. 學生回答問題或答案頻率問題等

我的表都是以這種形式;

Csv    Ans   Quest  Test Ans_Quest_Test 
---------  ------  ------  ------ ------------- 
LName   id   id   Id  Ansid 
FName   Ans   Quest  name  Questid 
stdname  StdScore ActScore    Testid 
Quest           Stdname 
Ans 
ActualScore 
StdScore 
+0

目前尚不清楚你的要求。你能否改寫這個問題來澄清你的需求? – bobs 2010-09-03 18:58:53

+1

這是一個功課問題嗎? – ErikE 2011-05-22 04:54:32

+0

你是說你只有一張桌子,所有這些元素都在列中?或者你是否想要把'Csv'表格標準化爲'Ans','Quest','Test'和'Ans_Quest_Test'表格? – 2011-08-09 13:37:57

回答

0
INSERT INTO Ans_Quest_Test 
SELECT FLOOR(RAND(CHECKSUM(NEWID())) * 10000) --random number 
, FLOOR(RAND(CHECKSUM(NEWID())) * 10000)--random number 
, FLOOR(RAND(CHECKSUM(NEWID())) * 10000)--random number 
, Stdname FROM Csv 

INSERT INTO Ans 
SELECT AnsId, Ans, StdScore FROM Ans_Quest_Test 
    JOIN Csv ON Ans_Quest_Test.Stdname=Csv.stdname 

INSERT INTO Quest 
SELECT QuestId, Quest, ActualScore FROM Ans_Quest_Test 
    JOIN Csv ON Ans_Quest_Test.Stdname=Csv.stdname 

我沒有看到在CsvTest任何name,所以我不能寫一個insert爲表Test :)

學生平均成績的一個問題

SELECT Stdname, AVG(Quest.ActScore) 
FROM Ans_Quest_Test 
    JOIN Quest ON Ans_Quest_Test.Questid=Quest.id 
GROUP BY Stdname 

學生回答問題

SELECT Ans_Quest_Test.Stdname, Quest.Quest, Ans.Ans 
FROM Ans_Quest_Test 
    JOIN Quest ON Ans_Quest_Test.Questid=Quest.id 
    JOIN Ans ON Ans_Quest_Test.Ansid=Ans.id 

答案頻率問題

SELECT Quest.Quest, COUNT(Ans.id) 
FROM Ans_Quest_Test 
    JOIN Quest ON Ans_Quest_Test.Questid=Quest.id 
    JOIN Ans ON Ans_Quest_Test.Ansid=Ans.id 
GROUP BY Quest.Quest