如何插入到sql server中的多对多关系表

时间:2010-09-03 03:28:56

标签: sql sql-server tsql sql-server-2008

我通过.net app将数据导入到csv表中,请帮忙,我如何插入到所有表中以便我可以查询;

  1. 学生平均得分为问题或测试
  2. 学生回答问题的问题或答案频率
  3. 我的表格是这种形式;

    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
    

1 个答案:

答案 0 :(得分: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

我在name表中看不到Test的任何Csv,因此我无法为表insert编写Test:)< / p>

  

学生平均得分问题

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