2 つのクエリをマージしようとしています。目的は、MAX(ID) に基づいて、名前と最新のリストのタイトルと共に一意の顧客の電子メールを含むレコードセットを取得することです。
DISTINCT を使用すると、メールと ID を取得できますが、明らかにタイトルを追加するとこれが壊れます。
これは私がこれまでに持っているものです:
SELECT DISTINCT MAX(EV_ID) As EV_ID, EV_ContactEmail, EV_CusName
FROM tblEvents ev
INNER JOIN tblCustomers cus ON cus.CUS_ID = ev.EV_CustomerID
WHERE (
CUS_IsAdmin = 'y'
AND CUS_Live = 'y'
AND EV_Live = 'y'
AND EV_EndDate >= '2012/7/5 12:00:00 AM'
AND EV_ContactEmail <> ''
)
GROUP BY EV_ContactEmail
ここで、自己結合を行う必要があることを示すいくつかの投稿を見つけましたが、同じ量のレコードを返すことはできませんが、タイトルを使用すると、さらに多くのレコードが返されます。
SELECT DISTINCT MAX(EV_ID) As EV_ID, ev.EV_Title, EV_ContactEmail, EV_CusName
FROM tblEvents ev
INNER JOIN tblCustomers cus ON cus.CUS_ID = ev.EV_CustomerID
INNER JOIN (
SELECT EV_Title, MAX(EV_ID) AS MaxID
FROM tblEvents
GROUP BY EV_Title
) groupedev ON ev.EV_Title = groupedev.EV_Title AND ev.EV_ID = groupedev.MaxID
WHERE (
CUS_IsAdmin = 'y'
AND CUS_Live = 'y'
AND EV_Live = 'y'
AND EV_EndDate >= '2012/7/5 12:00:00 AM'
AND EV_ContactEmail <> ''
)
GROUP BY EV_ContactEmail, ev.EV_Title
誰がそれの何が悪いのかアドバイスできますか?