1

組織のランク順に降順で組織の順序を表示するクエリを作成する必要があります。ただし、組織に現在発生しているイベントがある場合は、それらが一番​​上に表示されます(ランク順に)。次に、イベントが発生している組織が表示され、最後に何も発生していない組織が表示されます。

組織は、現在発生しているイベントと今後のイベントの両方を持つことができ、それぞれの倍数を持つことができますが、選択するイベントは1つだけであり、組織はカテゴリの下にのみ表示されます

現在発生していることは今後発生することよりも優先されるため、組織は現在発生しているイベントと今後発生するイベントの両方がある場合にのみ、現在発生している組織に表示されます。

これが出力の例です

現在起こっている

  • 組織1(ランク3)-イベント1
  • 組織2(ランク2)-イベント2
  • 組織3(ランク1)-イベント3

今後の

  • 組織5(ランク3)-イベント4
  • 組織4(ランク2)-イベント5
  • 組織6(ランク2)-イベント6

何もない

  • 組織7(ランク3)-イベント7
  • 組織8(ランク2)-イベント8
  • 組織9(ランク2)-イベント9

これがテーブル設定の例です

組織ID-名前-ランク

イベントid-organization_id-name-status(2 =現在発生中、1 =今後、0 =なし)

ステータス列には、2、1、または0のいずれかが含まれています。これにより、ORDERBYを実行できると思います。

誰かがサンプルクエリを書くことができれば、私はそれを大いに感謝します!イベントをステータスで並べ替えると同時に、それらのイベントの組織をランクで並べ替えるのに問題があります。

4

1 に答える 1

1

例:

SELECT o.*, max(e.status) AS org_status
FROM   organization o
JOIN   event e ON e.organiszation_id = o.organization_id
GROUP  BY o.organization_id
ORDER  BY org_status DESC, o.rank DESC, o.name;

データベース全体の複数のテーブルでわかりやすい名前を使用するのはアンチパターンであるためorganization_id、主キーとして使用することに注意してください。organizationid

o.organization_idそれが主キーであるという事実も、私ができることだけですGROUP BY o.organization_id-これはPostgreSQL 9.1以降で機能します。

于 2012-08-27T22:34:00.017 に答える