Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将三个SQL Server表连接在一起以显示图像_C#_Asp.net_Sql Server - Fatal编程技术网

C# 将三个SQL Server表连接在一起以显示图像

C# 将三个SQL Server表连接在一起以显示图像,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在尝试使用SQL Server表为我的ASP.NET网站中的每个学生创建相册/集合 以下是我的表格结构: 我想将图像名称存储在Student_Images文件夹中。然后,每个图像都将链接到一个照片集。每个照片集都链接到一个组 然后我想显示每个组,与该组关联的所有照片集合,然后是与该集合关联的所有图像 我已经能够显示与每个学生相关的图像,但我不知道如何在学生和图像表之间添加“照片收集”表 以下是我希望它的显示方式: 以下是表格的填充方式: 有人能告诉我如何进行连接吗?对照片收集表进行一些

我正在尝试使用SQL Server表为我的ASP.NET网站中的每个学生创建相册/集合

以下是我的表格结构:

我想将图像名称存储在Student_Images文件夹中。然后,每个图像都将链接到一个照片集。每个照片集都链接到一个组

然后我想显示每个组,与该组关联的所有照片集合,然后是与该集合关联的所有图像

我已经能够显示与每个学生相关的图像,但我不知道如何在学生和图像表之间添加“照片收集”表

以下是我希望它的显示方式:

以下是表格的填充方式:


有人能告诉我如何进行连接吗?

对照片收集表进行一些更改,在学生ID的照片收集中创建一个FK,然后您就可以显示所有学生的照片收集,因为通过学生ID,您可以访问学生表和学生图像。
希望有帮助。

有外键的概念,表中的一行引用另一个表中的一行。为了确保数据的完整性,并为在站点上工作的任何人记录您的关系,您确实希望这样做,原因有很多

你没有足够的信息去达到你想要的目的。相册和其中包含的图像之间没有任何链接。你需要另一张桌子

我有点建议您使用不重复表名的列名。你会发现你可以在你的模式中更清楚地看到模式。例如,
Photo\u Collection.Photo\u Collection\u Id
应该只是
Photo\u Collection.Id
。它更简洁,而且很明显您所说的是哪个Id,因为在引用该列时总是使用表名

因此,为了让您更接近您需要的位置,我推荐如下:

create table dbo.Students
(
  ID
    int not null identity( 1, 1 )
    constraint [Students.ID.PrimaryKey]
      primary key clustered,

  Name
    nvarchar( 50 ) --> not very generous :-)
)
go
create index [Students.Name.Index] on dbo.Students( Name ) --> maybe unique?
go

create table dbo.Student_Images
(
  ID
    int not null identity( 1, 1 )
    constraint [Student_Images.ID.PrimaryKey]
      primary key clustered,

  Student_ID
    int not null
    constraint [Student_Images.to.Student]
      foreign key references dbo.Students( ID )

  Filename
    nvarchar( 250 ) null,  --> null? really? each image should have a unique file name, dont you think?

  Description
    nvarchar( 250 ) null
)
go
create index [Student_Images.to.Students.Index] on dbo.Student_Images( Student_ID )
go

create table dbo.Photo_Collection
(
  ID
    int not null identity( 1, 1 )
    constraint [Photo_Collection.ID.PrimaryKey]
      primary key clustered,

  Name
    nvarchar( 250 ) null --> null? hmmm...could be hard to use
)
go
create index [Photo_Collection.Name.Index] on dbo.Photo_Collection( Name ) --> consider unique??
go

create table dbo.Photo_Collection_Images
(
  Photo_Collection_ID
    int not null
    constraint [Photo_Collection_Images.to.Photo_Collection]
      foreign key references dbo.Photo_Collection( ID ),

  Student_Image_ID
    int not null
    constraint [Photo_Collection_Images.to.Student_Images]
      foreign key references dbo.Student_Images( ID )
)
你没有真正描述你的团队…还有很多问题没有回答。例如,照片收藏是学生制作的吗?如果是这样的话,照片收藏中可能会有一个学生ID,上面有学生的外键

我添加的名为
Photo\u Collection\u Images
的表将照片集合与图像关联起来。在任何需要显示给定照片集合中所有图像的查询中,都会包含此表。我想这是你主要的缺失。你会为小组做类似的事情

另外-仅供参考,粘贴文本图像有点让人恼火。考虑只粘贴文本并缩进4个空格以使其格式正确。

编辑

例如,要选择学生照片集合中的所有图像,可以执行以下操作:

select
  pc.Name PhotoCollectionName,
  si.FileName FileName,
  si.Description FileDescription,
  s.Name StudentName
from
  dbo.Photo_Collection pc
  inner join
  dbo.Photo_Collection_Images pci
  on
    pc.Id = pci.Photo_Collection_ID
  inner join
  dbo.Student_Image si
  on
    pci.Student_Image_ID = si.ID
  inner join 
  dbo.Students s
  on 
    si.Student_Id = s.ID

这几乎是所有内容的基本查询。

在这种情况下,
组是什么?是学生的集合吗?如果是这样,一个学生能成为几个小组的一部分吗?请提供一些样本输出。这是一个打字错误,小组图片应该是学生图片。任何提到团体的地方,都应该是学生。我将编辑我的帖子以显示此内容correctly@balaji我已经更新了sqlabove@user1429080您好,这是一个输入错误,我已经更新了上面的代码。您好,我已经做了您提到的这些更改,并且发布了上面最新的SQL。你知道我现在是如何展示它们的吗?嗨,谢谢你这么详细的回答。基本上,我想为每个学生展示一些照片集。目前,我能够将每个学生的图像显示为一个组(即不分为照片集)。我需要的功能是:创建一个学生。然后,能够为每个学生创建一系列包含各种图片的照片集。我已经粘贴了你的代码,这似乎是有意义的。但是,如果我想使用您的表(客户)将图像添加到集合中,我该如何编写INSERT语句呢?我不知道客户是什么:-)对不起,我是从网上的一个例子中发现的!我对它进行了更多的研究,我知道如何插入到Student和Photo_集合中,但当我尝试插入到Student_Images表中时,我遇到了问题,因为我需要向该表添加外键