SQL Server检索数据库

时间:2016-01-21 11:15:02

标签: sql-server foreign-keys sql-view data-retrieval multiple-records

这可能听起来令人困惑和容易。但是我尝试了几种方法而且没有用

现在我有一个包含这些列的表User

  • 编号
  • 用户ID
  • FILEID
  • 文本

和另一个表File

  • 编号
  • 文件名

和第3张表UserDetails

  • 编号
  • 名称
  • 名字

User& File使用外键FileIdId匹配进行关联 同样,UserUserDetails与外键UserIdId相关联。

所以我在SQL中创建了一个视图:

CREATE VIEW [dbo].[vw_NewView] AS
    SELECT 
        U.Text as Text,
        UD.Name + ' ' + UD.LastName AS FullName
    FROM 
        User U
    LEFT OUTER JOIN 
        dbo.UserDetails UD on UD.Id = U.UserId

现在我得到一个结果集:

Text     FullName
entry 1  NAme1
entry 2  Name2

注意:每个User都会与一个UserDetails相关联,即UserUserdetails具有一对一的关系。

UserFile有一对多的关系,因此每个User都可以包含多个文件。

如何为每个用户检索这些文件?

像这样的东西

Text     FullName   FileName 
entry 1  NAme1      File1
                    File2 
entry 2  Name2      File1
                    File2
                    File3

2 个答案:

答案 0 :(得分:0)

public void scroll() throws IOException {
          try {
            Dimension dimensions = driver.manage().window().getSize();
            System.out.println("Size of Window= " +dimensions);
            int scrollStart = (int) (dimensions.getHeight() * 0.5);
            System.out.println("Size of scrollStart= " +scrollStart);
            int scrollEnd = (int) (dimensions.getHeight() * 0.2);
            System.out.println("Size of cscrollEnd= " + scrollEnd);             
            driver.swipe(0,scrollStart,0,scrollEnd,1000);           
            Application_Log.info("Screen Swiped " );            

            } catch (IOException e) {

                Assert.fail("Swipe failed");
            }

      }

答案 1 :(得分:0)

我使用Stuff来获得所需的输出,下面是代码。

 CREATE VIEW [dbo].[vw_NewView] AS
    SELECT 
        U.Text as Text,
        UD.Name + ' ' + UD.LastName AS FullName,
     SUBSTRING(
            (
                SELECT ','+CAST(U.Id AS VARCHAR) +'_'+F.FileName  AS [text()]
                FROM File F
                WHERE  U.Id = F.NoteId
                ORDER BY U.Id
                FOR XML PATH ('')
            ), 2, 1000) [FileName]
    FROM 
        User U
    LEFT OUTER JOIN 
        dbo.File F on UD.Id = U.NoteId

    GO

这对我有用。得到了我的答案作为一串逗号分隔值。

输出:

Text     FullName   FileName 
entry 1  NAme1      File1,File2 
entry 2  Name2      File1,File2,File3