SELECT
MMBID,
MMBStartDate,
MMBEnddate,
vp.viewed,
fp.favorites
FROM MMBT1
INNER JOIN MMBT2 ON MMBT1.Profile_ID = MMBT2.Profile_ID
INNER JOIN (
SELECT
Profile_ID,
COUNT(Viewed_ProfileId) AS viewed
FROM dbo.Viewed_Profiles
GROUP BY Profile_ID
) vp ON MMBT1.Profile_ID = vp.Profile_ID
INNER JOIN (
SELECT
Profile_ID,
COUNT(Favorite_ProfileId) AS favorites
FROM dbo.Favorite_Profiles
GROUP BY Profile_ID
) fp ON MMBT1.Profile_ID = fp.Profile_ID
Если некоторые значения MMBT1.Profile_ID
не совпадают ни в элементах vp
, ни в fp
, соответствующие строки не будут включены в набор результатов.Если это нежелательно, и вы хотите, чтобы все строки из объединения MMBT1
& MMBT2
были сохранены, используйте LEFT JOINs:
SELECT
MMBID,
MMBStartDate,
MMBEnddate,
<b>COALESCE(vp.viewed, 0) AS viewed</b>,
<b>COALESCE(fp.favorites, 0) AS favorites</b>
FROM MMBT1
INNER JOIN MMBT2 ON MMBT1.Profile_ID = MMBT2.Profile_ID
<b>LEFT JOIN</b> (
SELECT
Profile_ID,
COUNT(Viewed_ProfileId) AS viewed
FROM dbo.Viewed_Profiles
GROUP BY Profile_ID
) vp ON MMBT1.Profile_ID = vp.Profile_ID
<b>LEFT JOIN</b> (
SELECT
Profile_ID,
COUNT(Favorite_ProfileId) AS favorites
FROM dbo.Favorite_Profiles
GROUP BY Profile_ID
) fp ON MMBT1.Profile_ID = fp.Profile_ID