如何从sql server 2008中获取表中的唯一记录

问题描述:

我有3个表 如何从sql server 2008中获取表中的唯一记录

  • crossarticle_article - 存储文章详细信息的位置。
  • crossarticle_category - 存储类别详细信息。
  • crossarticle_articletocategory - 所有三个表在哪里文章和类别映射存储。(这是因为文章可以在多个类别中存在)
  • 现在我想基础上,文章加入,但问题是如果我这样做,我会得到重复的文章标题,因为同一篇文章可能在多个类别中,所以没有使用组。我需要crossarticle_category连接,因为类别名称存在于该表中。即使我跳过该表,仍然crossarticle_articletocategory具有类别和文章的映射。所以仍然我会重复文章标题,任何人都可以建议我一些查询,这样我就不会重复文章标题。

    ****************************UPDATED QUESTION************************* 
    

    http://www.prosoundnetwork.com/uploadedImages/ProAudioReview/Forum/PAR_Forum/Sample2/sqlquery.png

    你可以右键点击并在新窗口中打开,看到合适的视图,在结果可以看到标题重复。

    +0

    你想要的结果的类别做的事情 - 获得数?用逗号分隔的列表?如果您有多个类别,您究竟期待什么? – Hogan 2011-12-30 22:10:11

    +0

    此外,你应该发布你的表的细节 - 或者其中的一些 - 所以我们可以编写sql的工作。 – Hogan 2011-12-30 22:11:53

    +0

    你能发布你想要的输出吗?样品会很棒。 – UnhandledExcepSean 2011-12-30 22:34:41

    像这样将工作:

    SELECT TOP 5 CA.Id AS ArticleID, CA.Title as ArticleTitle, 
        stuff((SELECT ', '+CC.Name 
          FROM CrossArticle_ArticleToCategory A2C 
          INNER JOIN CrossArticle_Category CC ON A2C.CategoryId = CC.Id 
          WHERE A2C.ArticleId = CA.Id 
          ORDER BY CC.Name 
          FOR XML PATH ('') 
          ), 1, 2, '') as Categories 
        FROM CrossArticle_Article CA 
    

    这会给你每篇文章一行与类别的逗号列表。 它看起来就像这样(我测试,因此它是正确的):

    ArticleID Article Title    Categories 
    5685  AlkjTechv     Hardware 
    5684  Show Report...    Gear, News 
    5683  Radi-something introduces Gear, News 
    

    我只有3个答案,因为你只给了示例数据为3个结果。

    附注:这比自定义聚合要快得多。


    如果什么类别是不是选择这样不要紧会给你所有的标题:

    SELECT TOP 5 CA.Id AS ArticleID, CA.Title as ArticleTitle, 
        FROM CrossArticle_Article CA 
    
    +0

    其实我只想记录那篇文章,因为我会有一个链接,这可能是任何一个部分的时间。所以排名第一的最新记录为特定类别 – Abbas 2011-12-30 23:02:37

    +0

    您好霍根,我猜这会对我有用,只是一个问题,我可以在第一个类别之前获得第一类, – Abbas 2011-12-30 23:15:42

    +0

    我不确定我是否理解,您只需要一个类别?那么在数据库中拥有多个类别有什么意义? – Hogan 2011-12-30 23:55:56

    使用distinct修饰符:SELECT distinct article_title

    +0

    这不包括类别 - 原始请求的一部分。 – Hogan 2011-12-30 22:12:30

    +0

    只有当您获得独特的标题时,这才会起作用。如果你想(以某种方式)包含文章所属的类别,它会变得更加复杂。 – jklemmack 2011-12-30 22:14:02

    +0

    @霍根这可能是我,但我没有看到他要求这样的事情。如果他想要别的东西,他应该提出更详细的问题。 – ChristopherS 2011-12-30 22:17:21