๐Ÿ’พ DataBase

[MySQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ—ค๋น„ ์œ ์ €๊ฐ€ ์†Œ์œ ํ•œ ์žฅ์†Œ(Lv. 3)

mxnxeonx 2023. 5. 24. 16:43
728x90
728x90

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ—ค๋น„ ์œ ์ €๊ฐ€ ์†Œ์œ ํ•œ ์žฅ์†Œ

์ด ์„œ๋น„์Šค์—์„œ๋Š” ๊ณต๊ฐ„์„ ๋‘˜ ์ด์ƒ ๋“ฑ๋กํ•œ ์‚ฌ๋žŒ์„ "ํ—ค๋น„ ์œ ์ €"๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ํ—ค๋น„ ์œ ์ €๊ฐ€ ๋“ฑ๋กํ•œ ๊ณต๊ฐ„์˜ ์ •๋ณด๋ฅผ ์•„์ด๋”” ์ˆœ์œผ๋กœ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

๋ฌธ์ œ ์„ค๋ช…

PLACES ํ…Œ์ด๋ธ”์€ ๊ณต๊ฐ„ ์ž„๋Œ€ ์„œ๋น„์Šค์— ๋“ฑ๋ก๋œ ๊ณต๊ฐ„์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. PLACES ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ ID, NAME, HOST_ID๋Š” ๊ฐ๊ฐ ๊ณต๊ฐ„์˜ ์•„์ด๋””, ์ด๋ฆ„, ๊ณต๊ฐ„์„ ์†Œ์œ ํ•œ ์œ ์ €์˜ ์•„์ด๋””๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ID๋Š” ๊ธฐ๋ณธํ‚ค์ž…๋‹ˆ๋‹ค.

NAME TYPE
ID INT
NAME VARCHAR
HOST_ID INT

 

์˜ˆ๋ฅผ ๋“ค์–ด, PLACES ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด

ID NAME HOST_ID
4431977 BOUTIQUE STAYS - Somerset Terrace, Pet Friendly 760849
5194998 BOUTIQUE STAYS - Elwood Beaches 3, Pet Friendly 760849
16045624 Urban Jungle in the Heart of Melbourne 30900122
17810814 Stylish Bayside Retreat with a Luscious Garden 760849
22740286 FREE PARKING - The Velvet Lux in Melbourne CBD 30900122
22868779 โ˜… Fresh Fitzroy Pad with City Views! โ˜… 21058208
  • 760849๋ฒˆ ์œ ์ €๋Š” ๊ณต๊ฐ„์„ 3๊ฐœ ๋“ฑ๋กํ–ˆ์œผ๋ฏ€๋กœ ์ด ์œ ์ €๋Š” ํ—ค๋น„์œ ์ €์ž…๋‹ˆ๋‹ค.
  • 30900122๋ฒˆ ์œ ์ €๋Š” ๊ณต๊ฐ„์„ 2๊ฐœ ๋“ฑ๋กํ–ˆ์œผ๋ฏ€๋กœ ์ด ์œ ์ €๋Š” ํ—ค๋น„์œ ์ €์ž…๋‹ˆ๋‹ค.
  • 21058208๋ฒˆ ์œ ์ €๋Š” ๊ณต๊ฐ„์„ 1๊ฐœ ๋“ฑ๋กํ–ˆ์œผ๋ฏ€๋กœ ์ด ์œ ์ €๋Š” ํ—ค๋น„์œ ์ €๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

 


 

๋ฌธ์ œ ํ•ด์„ค

๊ณต๊ฐ„์„ ๋‘˜ ์ด์ƒ ๊ฐ€์ง„ 'ํ—ค๋น„ ์œ ์ €'๋งŒ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๊ฐ™์€ HOST_ID๋ฅผ ๊ฐ€์ง€๋Š” ํ–‰์ด 2๊ฐœ ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋งŒ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. HOST_ID๊ฐ€ ๊ฐ™์€ ๊ฒƒ๋ผ๋ฆฌ ๊ทธ๋ฃน์„ ์ง€์–ด ํ•ฉ๊ณ„๋ฅผ ์„ธ๋ฉด ๋˜๋Š”๋ฐ, GROUP BY์™€ ์ง‘๊ณ„ํ•จ์ˆ˜ COUNT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๊ณผ์ •์„ ํ’€์–ด์„œ ๋ณด๋ฉด, 

  1. 'ํ—ค๋น„ ์œ ์ €'์— ํ•ด๋‹นํ•˜๋Š” ์œ ์ €(HOST_ID)๋ฅผ ์ฐพ๋Š”๋‹ค.
  2. ์ฐพ์€ 'ํ—ค๋น„ ์œ ์ €'์˜ HOST_ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ PLACES ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ ์กฐํšŒํ•œ๋‹ค.

1๋ฒˆ ๊ณผ์ •์ด ์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , 1๋ฒˆ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ 2๋ฒˆ ์ฟผ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ ๋ฐ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

์ฟผ๋ฆฌ ์ž‘์„ฑ 1)

๋จผ์ € 'ํ—ค๋น„ ์œ ์ €'์— ํ•ด๋‹นํ•˜๋Š” ์œ ์ €(HOST_ID)๋ฅผ ์กฐํšŒํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(HOST_ID) >= 2

 

์ฟผ๋ฆฌ ์ž‘์„ฑ 2)

์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ PLACES ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ ์กฐํšŒํ•œ๋‹ค.

SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID IN (
    SELECT HOST_ID
    FROM PLACES
    GROUP BY HOST_ID
    HAVING COUNT(HOST_ID) >= 2
)
ORDER BY ID

 

์‹คํ–‰ ๊ฒฐ๊ณผ

728x90
320x100