2011-12-30 15 views
1

私は3つのテーブルを持っています SQL Server 2008のテーブルから一意のレコードを取得する方法

  • crossarticle_article - 記事の詳細が格納されています。
  • crossarticle_category - カテゴリの詳細が保存される場所。
  • crossarticle_articletocategory - 記事とカテゴリのマッピングが格納されている...(記事が複数のカテゴリーに存在する可能性があるため、これがある)
  • 今私はすべての3つの表の結合に基づいて記事を取得したいですしかし、問題は私がそれをするならば、同じ記事が複数のカテゴリにある可能性があるので、私は繰り返された記事のタイトルを取得するので、グループの使用もありません。カテゴリ名がそのテーブルに存在するので、crossarticle_category joinが必要です。私がそのテーブルをスキップしても、crossarticle_articletocategoryはカテゴリと記事のマッピングを持っています。だから私は繰り返し記事タイトルを得るだろう、誰かが私に何かクエリを提案することができるように私は繰り返し記事タイトルを取得しないでください。

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

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

    あなたは右クリックして[新しいウィンドウで開く、適切なビューを表示するために、結果セットであなたは、タイトルが繰り返され見ることができます。

    +0

    あなたは結果内のカテゴリをどうしたいん何を - カウントを取得?コンマ区切りリスト?複数のカテゴリーがある場合は、正確に何を期待していますか? – Hogan

    +0

    また、テーブルの詳細(またはその一部)を投稿して、動作するSQLを書くことができます。 – Hogan

    +0

    出力を希望するものを投稿できますか?サンプルは素晴らしいでしょう。 – UnhandledExcepSean

    答えて

    2

    このような何かが動作します:

    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 
    

    これはカテゴリのカンマリストにあなたの記事ごとに1つの行を提供します。 それは(私はそれが正しいかテストした)次のようになります。

    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

    実際には、私はその記事のためだけにレコードをしたい、私はその上にリンクを持つことになります。これは、一度に一つのセクションになる可能性があります。特定のカテゴリのトップ1最新のレコード – Abbas

    +0

    こんにちはhogan、これは私のために働くだろう、ちょうど質問、私はちょうど "、"の前に最初のカテゴリを得ることができます – Abbas

    +0

    私は理解している、 ?あなたのデータベースに複数のカテゴリーがあるのはどういう意味ですか? – Hogan

    2

    修飾子distinctSELECT distinct article_titleを使用してください。

    +0

    これにはカテゴリが含まれていません - 元のリクエストの一部。 – Hogan

    +0

    これはユニークなタイトルを取得している場合にのみ機能します。記事が属するカテゴリを(何らかの形で)含めるには、やや複雑になります。 – jklemmack

    +0

    @Hoganそれは私かもしれませんが、私は彼がそのようなことを求めているのを見ません。彼が何か他のものを望むなら、彼は彼の質問をより詳細にすべきである。 – ChristopherS

    関連する問題