1

ブログ ソフトウェアに似た Web アプリケーションを作成しています。

タグで分類されたブログ投稿を表示する場合、クライアントへの出力は次のようになります。

--PostID 1--
--PostContent 1--
--Tags : tag1 , tag2 --

--PostID 2--
--PostContent 2--
--Tags : tag1 , tag2, tag3 --

--PostID 3--
--PostContent 3--
--Tags : tag3 , tag4--

だから私は次のようなクエリを使用しています:

Select PostTitle, PostContent from tblBlogPost ...

ただし、タグは以下の構造の新しいテーブルにあります。

PostID   PostTag
1        tag1
1        tag2
2        tag1
2        tag2
2        tag3
3        tag3
3        tag4

では、タグリストをクエリに含めるにはどうすればよいですか?

4

2 に答える 2

0

を使用できますpivot。ここで詳細な回答を確認できます:
How to transform data from rows based on a specific column to another data structure

それぞれのタグにこのコードを使用する必要がありますPostID(一部のタグに NULL 値を使用することを気にしない限り --> 1 つのクエリで実行できます)。

PostID = 2 の例:

select PostID, Tag1, Tag2, Tag3
from
(
  select id,
    col = col + cast(seq as varchar(10)),
    value
  from
  (
    select PostID, PostTag
      , row_number() over(partition by PostID
                          order by PostID) seq
    WHERE PostId = 2
    from yourtable
  ) t
  cross apply
  (
    select 'Tag', PostTag 
  ) c (col, value)
) d
pivot
(
  max(value)
  for col in (Tag1, Tag2, Tag3)
) piv;
于 2013-10-19T11:10:56.687 に答える