
mypage๋ฆฌ์คํธ, ํ๋์ ๊ฒ์๋ฌผ์ ๋๊ธ๊ณผ ์ข์์ ์๋งํผ ์ค๋ณต๋์ด ๋ํ๋๋ค.
SQL์ GROUP BY์ํด์ ์๊ธด ๋ฌธ์ SELECT
A.feed_id, IFNULL(B.cnt, 0) AS favCnt, IFNULL(D.cnt, 0) AS cmtCnt
, CASE WHEN E.feed_id IS NULL THEN 0 ELSE 1 END AS isFav
, CASE WHEN F.feed_id IS NULL THEN 0 ELSE 1 END AS isCmt
FROM feed A
LEFT JOIN (
SELECT feed_id, COUNT(feed_id) AS cnt
FROM feed_fav
GROUP BY feed_id
) B
ON A.feed_id = B.feed_id
LEFT JOIN (
SELECT feed_id, COUNT(feed_id) AS cnt
FROM cmt
GROUP BY feed_id
) D
ON A.feed_id = D.feed_id
LEFT JOIN feed_fav E ๐ ๐บGROUP BYํ์ง ์์์๐บ
ON E.users_id = 2 AND A.feed_id = E.feed_id
LEFT JOIN cmt F
ON F.users_id = 2 AND A.feed_id = F.feed_id
WHERE A.users_id = 2 ๐ ๐บGROUP BYํ์ง ์์์๐บ
ORDER BY A.feed_id DESC
๐ ์ฌ๋ฐ๋ฅธ SQL
SELECT
A.feed_id, IFNULL(B.cnt, 0) AS favCnt, IFNULL(D.cnt, 0) AS cmtCnt
, CASE WHEN E.feed_id IS NULL THEN 0 ELSE 1 END AS isFav
, CASE WHEN F.feed_id IS NULL THEN 0 ELSE 1 END AS isCmt
FROM feed A
LEFT JOIN (
SELECT feed_id, COUNT(feed_id) AS cnt
FROM feed_fav
GROUP BY feed_id
) B
ON A.feed_id = B.feed_id
LEFT JOIN (
SELECT feed_id, COUNT(feed_id) AS cnt
FROM cmt
GROUP BY feed_id
) D
ON A.feed_id = D.feed_id
LEFT JOIN ( ๐ ๐บGROUP BY๐บ
SELECT users_id, feed_id
FROM feed_fav
GROUP BY feed_id
) E
ON E.users_id = 2 AND A.feed_id = E.feed_id
LEFT JOIN ( ๐ ๐บGROUP BY๐บ
SELECT users_id, feed_id
FROM cmt
GROUP BY feed_id
) F
ON F.users_id = 2 AND A.feed_id = F.feed_id
WHERE A.users_id = 2
ORDER BY A.feed_id DESC