Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008 如何通过子查询获取多列?_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 如何通过子查询获取多列?

Sql server 2008 如何通过子查询获取多列?,sql-server-2008,tsql,Sql Server 2008,Tsql,我想得到会员和他们的照片。每个成员有2张照片。(我不是说个人资料图像) 有两个名为Members和MemberPhotos的表 这是我的问题,但它不起作用(预期): 也许有人会说我应该使用内部连接,我不想使用内部连接,如果我使用它,我会得到多个数据,比如: Name Surname PhotoName Bill Gates bill.png Bill Gates bill2.png Steve Jobs

我想得到会员和他们的照片。每个成员有2张照片。(我不是说个人资料图像)

有两个名为Members和MemberPhotos的表

这是我的问题,但它不起作用(预期):

也许有人会说我应该使用内部连接,我不想使用内部连接,如果我使用它,我会得到多个数据,比如:

Name       Surname       PhotoName

Bill       Gates         bill.png
Bill       Gates         bill2.png
Steve      Jobs          steve.jpg
Steve      Jobs          steve2.jpg
关于查询,你有什么建议吗

谢谢

编辑: 下面是我想要得到的输出:

Name       Surname       FirstPhoto       SecondPhoto

Bill       Gates         bill.png         bill2.png
Steve      Jobs          steve.jpg        steve2.png

示例查询的唯一问题是在后面有一个额外的逗号

as MemberSecondPhoto
如果你移除这个,它就可以正常工作

但是,当该查询正在运行时,因为您知道每个成员只有两张照片,所以可以使用更简单的查询:

SELECT
  M.Name as MemberName,
  M.LastName as MemberLastName,
  MPF.PhotoName as MemberFirstPhoto,
  MPS.PhotoName as MemberSecondPhoto
FROM Members M
  LEFT JOIN MemberPhotos MPF ON M.ID = MPF.MemberID AND MPF.IsFirst = 1
  LEFT JOIN MemberPhotos MPS ON M.ID = MPS.MemberID AND MPS.IsFirst = 0

SELECT
  M.Name as MemberName,
  M.LastName as MemberLastName,
  MPF.PhotoName as MemberFirstPhoto,
  MPS.PhotoName as MemberSecondPhoto
FROM Members M
  LEFT JOIN MemberPhotos MPF ON M.ID = MPF.MemberID AND MPF.IsFirst = 1
  LEFT JOIN MemberPhotos MPS ON M.ID = MPS.MemberID AND MPS.IsFirst = 0