[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜คํ”„๋ผ์ธ/์˜จ๋ผ์ธ ํŒ๋งค ๋ฐ์ดํ„ฐ ํ†ตํ•ฉํ•˜๊ธฐ (MySQL)

    ๋ฐ˜์‘ํ˜•

    ๐ŸŒฑ ๋ฌธ์ œ

     

    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

    ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

    programmers.co.kr

     

    ๐ŸŒฑ ํ’€์ด

    • WHERE์€ FROM์— ๋ฌถ์ธ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์— WHERE ์ ˆ์ด ๋ชจ๋“  SELECT ์ ˆ์— ํ•œ๊บผ๋ฒˆ์— ์กฐ๊ฑด์„ ์ ์šฉ์‹œํ‚จ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ , WHERE ์ ˆ์„ ๋งˆ์ง€๋ง‰์—๋งŒ ์ ์–ด์ฃผ์—ˆ๋”๋‹ˆ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. SELECT์ ˆ๋งˆ๋‹ค WHERE์ ˆ ์กฐ๊ฑด์„ ๊ฑธ์–ด์ฃผ๋„๋กํ•ฉ๋‹ˆ๋‹ค!
    • UNION์€ 2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๊ฐ™์€ ์„ฑ๊ฒฉ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๋กœ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ, SELECT์™€ SELECT๋ฅผ ์„ธ๋กœ๋กœ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.
    • NULL AS USER_ID
      ONLINE_SALE์—๋Š” USER_ID๊ฐ€ ์žˆ์ง€๋งŒ, OFFLINE_SALE์—๋Š” USER_ID๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. UNION ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช…๊ณผ ์ปฌ๋Ÿผ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ OFFLINE_SALE์˜ SELECT ์ ˆ์—์„œ๋Š” 'USER_ID' ์ด๋ฆ„์œผ๋กœ ํ•˜๋Š” NULL ์ปฌ๋Ÿผ์„  ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

     

    ๐ŸŒฑ ์ฝ”๋“œ

    SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
    FROM ONLINE_SALE
    WHERE SALES_DATE LIKE '2022-03-%'
    UNION
    SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
    FROM OFFLINE_SALE
    WHERE SALES_DATE LIKE '2022-03-%'
    ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€