【问题标题】:Displaying many to many data in SQL Server in visual studio using c#使用 c# 在 Visual Studio 中的 SQL Server 中显示多对多数据
【发布时间】:2014-10-28 17:41:28
【问题描述】:

我知道这是可能的,但我想不出一种方法来显示它。

假设一个医生可以有很多专业。

医生:- DOC_ID, DOC_NAME, SPEC_ID

然后一个表是前者的外键,即

专业化:- SPEC_ID, SPEC_NAME

然后链接表“我忘了这个的技术术语是什么”分别是一个外键,即

医生专业化:- DOC_ID, SPEC_ID

如何在 Visual Studio 中显示?

【问题讨论】:

  • 您打算如何访问数据库中的数据?
  • 您是在问如何构建表示这种关系的对象或如何访问数据?
  • 你确定这是一对多的关系吗?对我来说这听起来更像是多对多(一个医生可以拥有多个专业,并且每个专业可以由许多医生“拥有”)
  • 是的,很抱歉我在输入标题时走神了。是的,这是多对多
  • @scott,我想插入然后查询它。

标签: c# sql .net sql-server tsql


【解决方案1】:

有两种方法可以做到这一点,第一种是在 SQL 中,第二种是 C# 代码。

In SQL:- 

DECLARE @DOC_ID = 1234
1. Fetch Doctor SPEC Name and Take into Temp table
   CREATE TABLE #tempDOC_SPEC             
    (             
      SPEC_ID int,             
      SPEC_NAME varchar(100)        
    )        

   INSERT INTO #tempDOC_SPEC
   SELECT SPECIALIZATION.SPEC_ID, SPECIALIZATION.SPEC_NAME
   FROM DOCTORSPECIALIZATION a INNER JOIN SPECIALIZATION b ON a.SPEC_ID = b.SPEC_ID
   WHERE DOC_ID = @DOC_ID

2. Stuff data from this temp table to get desired results    

 SELECT DOC_ID, DOC_NAME, 
 STUFF((Select ', '+ #tempDOC_SPEC.SPEC_NAME FROM tempDOC_SPEC FOR XML PATH('')), 1, 1, '')
 AS SPEC_Name
 FROM DOCTOR
 WHERE DOC_ID = @DOC_ID

此 SQL 查询将文档名称 Spec_Name 作为逗号分隔值提供给单个列。

In C#:- 
we have to loop through for each Doctor name and display the Spec_Name.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    相关资源
    最近更新 更多