SQL匹配行之间的列

时间:2013-01-10 13:22:12

标签: sql select

我需要编写一个select语句,它不仅收集来自多个表的信息,还收集某个表中与同一个表中其他行中的数据匹配的信息。

因此,虽然连接可用于多表问题,但据我所知,我无法“加入”同一表中的列a和列b。

这是详细信息

我有以下表格

CR,VM和文件夹

我需要选择以下内容:

CR的ID和名称

文件夹名称

文件夹名称不在文件夹表中,为了找到它,我需要首先从CR获取“ID”并将其与VM中的“ObjectID”匹配 - 然后该行中的“Location”列与ObjectID匹配VM表中的另一行。

然后我需要将文件夹中的ID与该ObjectID匹配,并检索表“Folder”中的“Name”以检索文件夹名称“。

我不知道从哪里开始,我应该使用游标吗?

1 个答案:

答案 0 :(得分:1)

可以通过对连接的一侧别名来连接表。这可能足以让您入门。否则我们需要看一些样本数据。

SELECT
  CR.ID,
  CR.Name,
  Folder.Name AS FolderName
FROM
  CR
  /* First join CR to VM */
  INNER JOIN VM ON CR.ID = VM.ObjectID
  /* Then join VM to itself aliased as VMLoc, mapping Location to ObjectID */
  INNER JOIN VM AS VMLoc ON VM.Location = VMLoc.ObjectID
  /* Finally join the second ObjectID to Folder to get Folder.Name */
  INNER JOIN Folder ON Folder.ID = VMLoc.ObjectID