私は2つのテーブルを持っており、会議や電話と呼んでいます。彼らはどちらも "イベント"インターフェースを実装しているので、日付、件名、参加者などの間に共通のフィールドを持っています。SQL:2列のうちの1列に基づいて結果セットをソートできますか?
1つの結果セットで会議と通話の両方を取得するクエリを実行したいと思います。日付でソートします。これは可能ですか?
読み込み用Thx!
私は2つのテーブルを持っており、会議や電話と呼んでいます。彼らはどちらも "イベント"インターフェースを実装しているので、日付、件名、参加者などの間に共通のフィールドを持っています。SQL:2列のうちの1列に基づいて結果セットをソートできますか?
1つの結果セットで会議と通話の両方を取得するクエリを実行したいと思います。日付でソートします。これは可能ですか?
読み込み用Thx!
あなたはこれを行うことができます
create table events (-- common columns go here
event_id bigint
, event_time datetime
, event_subject varchar(max)
)
create table phone_calls (
event_id bigint
, phone_number varchar(24)
)
create table meetings (
event_id bigint
, location varchar(max)
)
この方法で、すべての共通のデータが同じテーブルになってしまいます。一般的なフィールドを取得するには、イベントテーブルに参加する必要があるため、読み込みは少し複雑になります。とにかく、各選択肢にプラスとマイナスがあり、選択はあなた次第です。
はい:
select commonFields
from events
join meetings
union all
select commonFields
from events
join calls
order by date
これは擬似コードですが、あなたはそれを動作させることができます。
はい。
テーブル:
Meeting: m_id, m_date, m_subject
Event: e_id, e_date, e_subject
(SELECT m_id,m_date,m_subject,'meeting' FROM meeting
UNION ALL
SELECT eid,e_date,e_subject,'event' FROM event) ORDER BY 2
列の種類が同じTHOでなければなりません。 希望に役立ちます。
編集:「タイプ」(会議/イベント)を追加しました。追加の情報を検索するテーブルを知っています。
(select time, subject from meetings
union all
select time, subject from phonecalls)
)
order by time
代わりに、3つのテーブルに2つのクラスをマッピングすることができます:
次のようなものがあります(これはTSQLに基づいていますが、mysqlと同様である必要があります)。各テーブルの異なる列を含めることができ、他のテーブルの列値としてNULLを提供することができます。
SELECT EventDate
, EventSubject
, Particpants
, DifferentMeetingsColumn
, NULL AS DifferentPhoneCallsColumn
FROM Meetings
UNION ALL
SELECT EventDate
, EventSubject
, Participants
, NULL AS DifferentMeetingsColumn
, DifferentPhoneCallsColumn
FROM PhoneCalls
ORDER BY EventDate
これらのテーブルではどのような列が必要ですか?イベントの結果を表示しますか? – Lamak