0
私が抽出したいです何postgresqlで情報を抽出する条件が2つ以上ある場合は、どのようにクエリを書くのですか?
guides users offers reservations manager_crm_issues
id id id offer_id issuable_id
user_id username guide_id issuable_type issuable_type
以下のようにテーブルを持っているが
guide.id,
guide.username,
manager_crm_issues.count(issuuable_id)
issuable_typeの個別の値は{予約、オファー、ガイド}されている、そしてそれがissuable_idに対応しています。その後、issuable_idは= reservation.idで、私はすべての問題をカウントしたい
質問がガイドに起こった、とガイドを提供するためにリンクされている すなわちissuable_type =「予約」の場合は、オファーが予約にリンクされています。
SELECT
a.guideId,
a.guideName,
count(case when cr.issuable_type = 'Reservation' and cr.issuable_id = a.rID THEN cr.id else 0 END),
count(case when co.issuable_type = 'Offer' AND co.issuable_id = a.offerId THEN co.id else 0 END),
count(case when cg.issuable_type = 'Guide' AND cg.issuable_id = a.guideId THEN cg.id else 0 END)
FROM
(SELECT
g.id AS guideId,
u.username AS guideName,
o.id as offerId,
r.id as rId
FROM guides g
INNER JOIN users u on u.id = g.user_id
INNER JOIN offers AS o on o.guide_id = g.id
INNER JOIN reservations AS r on r.offer_id = o.id) a
INNER JOIN manager_crm_issues cg ON cg.id = a.guideId
INNER JOIN manager_crm_issues co ON co.id = a.offerId
INNER JOIN manager_crm_issues cr ON cr.id = a.rId
group by 1,2
私は上記のような表を結合しようとしましたが、結果は不正確です。 本当に助けていただければ幸いです。
2つのステップで行います:(1)guidenameと一緒にguideidを得るために 'join'で' select'を行います。 (2) 'GROUP BY'と' count(*) 'を組み合わせて追加します。 – jarlh
**あなたの質問に[編集] **し、いくつかのサンプルデータとそのデータに基づいて予想される出力を追加します。 [_Formatted_](http://stackoverflow.com/editing-help#code)**テキスト**お願い、[スクリーンショットなし](http://meta.stackoverflow.com/questions/285551/why-may-i -not-upload-images-of-code-on-so-ask-a-question/285557#285557) –