2017-02-21 15 views
1

私は2つのテーブルがあります:誰かが私に私がのように見えるレポートを取得するように、私はこれらに参加することができます方法についていくつかのアドバイスを与えるのを助けることができます彼らはPhrase.CategoryId == PhraseCategory.PhraseCategoryShortId2つのテーブルを結合し、テーブルの1つのフィールドでグループ化する方法はありますか?

CREATE TABLE [dbo].[Phrase] (
    [PhraseId]  UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [English]  NVARCHAR (250) NOT NULL, 
    [CategoryId] INT    NULL, 
    PRIMARY KEY CLUSTERED ([PhraseId] ASC) 
); 


CREATE TABLE [dbo].[PhraseCategory] (
    [PhraseCategoryShortId] INT    IDENTITY (1, 1) NOT NULL , 
    [Name]     VARCHAR (100) NOT NULL, 
    PRIMARY KEY CLUSTERED ([PhraseCategoryShortId] ASC) 
); 

にリンクされているフレーズやPhraseCategory

をこれは:

PhraseCategory.Name  Qty 

ここで、Qtyは各カテゴリに含まれるフレーズの数です。私も必要なもの

は、私は、これはあなたが唯一持っているフレーズのカテゴリをしたい場合は、単に

に参加i`s何かが欠けていない限り、報告書はPhraseCategory.Name

+0

サンプルデータを追加して質問を更新できますか? –

答えて

0

の順にソートしていていますあなたが参加する場合は、フレーズ・エントリ

SELECT PhraseCategory.name, count(*) AS qty 
    FROM Phrase 
    JOIN PhraseCategory 
    ON Phrase.CategoryId = PhraseCategory.PhraseCategoryShortId 
GROUP BY PhraseCategory.name 

またはNOフレーズを持つものも含めてすべての名前に興味があればJOINをLEFTを使用するには、

+0

しかし、これをPhraseCategory.nameでどのように注文できますか? –

+1

'ORDER BY PhraseCategory.name'を追加するだけです – Julian

0

エントリそれらは、クエリの開始時にSELECT ColA, ColB, ...と書いています。この後にGROUP BYを行うことができます。

SELECT Sum(ColC), ColA, ColB 
    FROM (
     SELECT t1.ColA, t1.ColB, t2.ColC 
     FROM Table1 t1, Table2 t2 
     WHERE t1.ColB = t2.ColB) r 
GROUP BY r.ColC 
関連する問題