私は、いくつかの異なるテーブルに存在するデータを取得しようとしています。具体的には、私はバグのテーブルとそのバグの "投稿"(コメント/更新)のテーブルを持っています。それぞれのバグについて、コメント、コメント、または多くのものがないかもしれません。すべてのバグが返され、すべてのコメントが返されます(私は更新を残しておきますが)が、バグ/コメントごとに1つの行ではなく、列として返されます。私が始めたのはここ1対多の関係 - 多くのコメントを持つ1つの項目
です:
select
b.bg_id,
b.bg_reported_date as "Date Created",
b.bg_short_desc as "Summary",
bp.bp_comment_search as "Comment Body",
s.st_name as "Status",
p.pr_name as "Priority",
bp.bp_type as "Update Type"
from
bugs b
inner join bug_posts bp on b.bg_id = bp.bp_bug
inner join statuses s on b.bg_status = s.st_id
inner join priorities p on b.bg_priority = p.pr_id
--where bp.bp_type = 'comment'
order by b.bg_id asc
これは私が欲しいものではありません各コメント、に1つの行を与えました。ご覧のとおり、「コメント」タイプの投稿のみを含むように制限しようとしましたが、コメントのないバグは除外されました。
私は、関連するように見えたこの記事が見つかりました:JOIN in SQL with one-to-many relationship
をしかし、私はそれが私のクエリを使用して動作させることはできません。ここで私がこれまで持っているものです。
select
b.bg_id,
b.bg_reported_date as "Date Created",
b.bg_short_desc as "Summary",
--bp.bp_comment_search as "Comment Body",
s.st_name as "Status",
p.pr_name as "Priority",
--bp.bp_type as "Update Type"
from
bugs b
left outer join
(select bp_comment_search as "Comment Body"
from bug_posts
group by bp_bug) bp on bp.bp_bug = b.bg_id
--inner join bug_posts bp on b.bg_id = bp.bp_bug
inner join statuses s on b.bg_status = s.st_id
inner join priorities p on b.bg_priority = p.pr_id
--where bp.bp_type = 'comment'
order by b.bg_id asc
マイSQLの知識は非常に限られているが、誰もが提供できるすべてのヘルプははるかに高く評価されるだろう。ありがとう!
どの種類のSQL(MySQL、Postgres、Oracle、MSSql)を使用していますか?そのバージョンは何ですか? –
私はSQL Server 2008を使用しています – user1108721
私は私の答えに以下の例を追加しました。行の代わりに列にコメントを置く部分 - >なぜそれを望みますか?あなたは望ましい出力の例を挙げることができますか? –