Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Sql server 2005 使用SQL Server Management Studio Express组合多个表_Sql Server 2005_Tsql_Relational Database - Fatal编程技术网

Sql server 2005 使用SQL Server Management Studio Express组合多个表

Sql server 2005 使用SQL Server Management Studio Express组合多个表,sql-server-2005,tsql,relational-database,Sql Server 2005,Tsql,Relational Database,不言而喻,对于T-SQL,我是一个严格的新手,使用SSMSE并不是我的第一选择,但我被它和设计糟糕的数据库所困扰。基本上,我试图从我们当前的数据库中输出数据,这样我就可以将其上传到我们的新软件中,我需要首先将这些数据保存在可管理的CSV文件中 我试图在不同的研究中移动与受试者相关的测量值,但数据存在于几个表格中。表如下(首先列出主键): 我知道我是数据库新手,但这种拓扑结构真的让我困惑。我们有很多研究,我想为每个研究创建一个excel文件,以直接导入的格式组织数据。为此,我需要为每个研究生成一个

不言而喻,对于T-SQL,我是一个严格的新手,使用SSMSE并不是我的第一选择,但我被它和设计糟糕的数据库所困扰。基本上,我试图从我们当前的数据库中输出数据,这样我就可以将其上传到我们的新软件中,我需要首先将这些数据保存在可管理的CSV文件中

我试图在不同的研究中移动与受试者相关的测量值,但数据存在于几个表格中。表如下(首先列出主键):

我知道我是数据库新手,但这种拓扑结构真的让我困惑。我们有很多研究,我想为每个研究创建一个excel文件,以直接导入的格式组织数据。为此,我需要为每个研究生成一个CSV文件,如下所示:

CREATE TABLE ImportStudy (SubjectName, PerformDateTime, Length, Width, Volume)
可以在第一列中重复主题名称,因为新软件就是这样插入的。任何帮助都会很好,可以帮我省下一两个月的生命,即使我必须使用像N'ABC123'这样的
WHERE StudyName
并输入每个名称。如果有人能帮我添加T-SQL等价于面向对象的“For-Each”循环,那将是令人惊讶的。再次感谢您的帮助

最好的,
Jeff

我不是100%确定您想要什么,但是获取CSV文件非常容易。如果要提取指定的数据,请运行类似于此的查询,并让Management Studio将结果输出到CSV文件:

select Subject.SubjectName, 
       Measurement.PerformDateTime, 
       Measurement.Length, 
       Measurement.Width, 
       Measurement.Volume 
From Study 
inner join Subject on Study.StudyId = Subject.StudyId
inner join Implant on Study.StudyId = Implant.StudyId
inner join Measurement on Implant.ImplantId = Measurement.ImplantId

你的模式有点奇怪的是,你把测量和受试者和植入物联系起来了。在上面的查询中,我忽略了从主题到测量的链接。

我对您的问题有点不确定-您是在问如何导出到CSV,还是查询生成结果集应该是什么样子

在任何情况下,您都可以在SSMS中构建一个特殊的SELECT语句。运行后,可以选择结果网格,单击鼠标右键,然后选择“使用标题复制”,然后粘贴到Excel中

为了构建查询,在不查看数据的情况下,表之间的键的名称似乎相同。你可以加入这些,并且应该接近你想要的

基本思想:

SELECT
   S.SubjectName,
   M.PerformDateTime,
   M.Length,
   M.Width,
   M.Volume
FROM
   Subject Sub ON S.StudyID = Sub.StudyID
     INNER JOIN
   Measurements M ON Sub.SubjectID = M.SubjectID

如果您需要按研究进行筛选(列出的列不包括信息),您也可以将其添加到联接列表中,然后在WHERE子句中进行筛选。

内部联接是t-SQL中的默认联接类型,因此只需联接是必需的。我总是将内部/外部也放在其中。简明扼要是为那些经常睡觉的人准备的(谢谢你的帮助。我的连接出了问题,所以对我来说什么都不起作用。我希望Management Studio可以为每一个或其他东西做一个调整。无论哪种方式,我都应该能够使用windows commmand shell来做这件事,并使用sqlcmd将其作为批处理运行。我将对此进行调整,以便欢迎对sqlcmd和cmd的任何见解。)d、 哦,是的,我没有设计这个模式。我只是有处理它的乐趣。学习过滤器会在加入列表@Dave中的什么位置?抱歉,但我只是在这里呆了几个月。错误地告诉你的老板你在大学里学过java课程,他们认为你对计算机了如指掌。好吧,现在我知道了我忘记了有一部分受试者有多个植入物。这意味着两个植入物(不同的植入物ID)有唯一的测量值(不同的测量ID)对于同样的动物,同样的表演时间。所以我的最后一张桌子将有一个左长,左宽,左音量和右相同。有什么建议吗。再次感谢,
SELECT
   S.SubjectName,
   M.PerformDateTime,
   M.Length,
   M.Width,
   M.Volume
FROM
   Subject Sub ON S.StudyID = Sub.StudyID
     INNER JOIN
   Measurements M ON Sub.SubjectID = M.SubjectID