いいえ、3つの表があるとします: カレンダー、ユーザーおよびリクエスト。列の値に基づいてGROUP BYを使用すると、一意の行が返されます
Calendar.ID、Users.IDおよびrequests.IDはすべて一意です。私はdbo.Calendarプラスusers.colorとrequests.Statusからすべてを引くしようとしている
(それは問題にした場合)
SELECT calendar.ID, calendar.date, calendar.type, calendar.userID, users.color, requests.status
FROM calendar LEFT OUTER JOIN
requests ON calendar.ID = requests.calendarID LEFT OUTER JOIN
users ON calendar.userID = users.userID
WHERE(calendar.date >= '2016-06-01') AND (calendar.date <= '2016-12-30')
group by calendar.id, calendar.date, calendar.type, calendar.userID, users.color, requests.status
私が取得完了した要求があるかどう私が直面してる問題があります行が重複していますが、この場合は「保留」と表示されます。
ID date type userID color status
4 2016-06-16 RE A #cc99ff pending
5 2016-06-17 RE A #cc99ff accepted
5 2016-06-17 RE A #cc99ff pending
6 2016-06-13 LM B #ffff99 NULL
7 2016-06-13 LM B #ffff99 accepted
私はこの取得しようとしている:
ID date type userID color status
4 2016-06-16 RE A #cc99ff pending
5 2016-06-17 RE A #cc99ff pending
6 2016-06-13 LM B #ffff99 NULL
7 2016-06-13 LM B #ffff99 accepted
FYI私は8年以上の中でSQLに触れていない、これは私が働いているだけの個人的なプロジェクトです。
使用ファレ状況を<>「受け入れ」 –
申し訳ありませんが、私はまだ他のレコードを必要とします「受け入れられた」値を持つ。 – Mark
あなたはステータス列を表示しているので、group byを使用している間に 'accepted'を省略することはできません。なぜなら、論理的には、同じIDのdateカラムやetcカラムに対して 'pending'と 'accepted' –