[TypeORM] ์ฟผ๋ฆฌ๋นŒ๋”: select

[์›๋ณธ ๋งํฌ]

์ด๋ฒˆ์—” select ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฒ•์„ ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.

ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ” ์—”ํ‹ฐํ‹ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ๋‹นํžˆ ๋“ค์–ด์žˆ๋‹ค.




์ „์ฒด ์กฐํšŒํ•˜๊ธฐ

์ „์ฒด๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋Š”๊ฑด ๊ฐ„๋‹จํ•˜๋‹ค.

์ฟผ๋ฆฌ ๋นŒ๋” ์ƒ์„ฑ ํ›„, select ๋ฉ”์„œ๋“œ๋กœ select์ž„์„ ์•Œ๋ฆฌ๊ณ .
from์— ์ˆœ์„œ๋Œ€๋กœ ํ…Œ์ด๋ธ” ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์™€ ํ…Œ์ด๋ธ” alias๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋„ฃ์–ด์ค€๋‹ค.
๊ทธ๋ฆฌ๊ณ  execute๋ฅผ ํ•˜๋ฉด ๋์ด๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰๋˜๊ณ , ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

from์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ” ์ง€์ •์„ ๋นŒ๋” ์ƒ์„ฑ์‹œ์— ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ์ปฌ๋Ÿผ์„ * ์—†์ด ๋ช…์‹œํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋˜๋”๋ผ.
์ผ๋‹จ ๋™์ž‘์—๋Š” ์ฐจ์ด๊ฐ€ ์—†๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ๋Š” execute๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์™”์ง€๋งŒ, ์ด์™ธ์—๋„ ๋ช‡๊ฐ€์ง€ ํ•จ์ˆ˜๊ฐ€ ๋” ์ œ๊ณต๋œ๋‹ค.
ํ•˜๋‚˜๋งŒ ๊ฐ€์ ธ์˜ค๋Š” getOne, ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” getMany ๋“ฑ์ด ์žˆ๋Š”๋ฐ, ์ „๋ถ€ ์ฟผ๋ฆฌ๋นŒ๋” ์ƒ์„ฑ ์‹œ์— ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ค€ ๊ฒฝ์šฐ์—๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

getOne

getMany

๋“ฑ๋“ฑ...




์ผ๋ถ€ ์ปฌ๋Ÿผ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ

select์— ์ธ์ž๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉด ๋””ํดํŠธ๋กœ select *๋ฅผ ๋•Œ๋ ค๋ฒ„๋ฆฐ๋‹ค.
ํŠน์ • ์ปฌ๋Ÿผ๋งŒ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

์ˆœ์„œ๋Œ€๋กœ ๊ฐ€์ ธ์˜ฌ ์ปฌ๋Ÿผ๋ช…๊ณผ alias๋‹ค.

ํ•œ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด addSelect๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์ € ์ปฌ๋Ÿผ ํ…์ŠคํŠธ์— ์—ฐ์‚ฐ์„ ์ถ”๊ฐ€๋กœ ์ ์œผ๋ฉด ์ปฌ๋Ÿผ์„ ๊ฐ€๊ณตํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.




์กฐ๊ฑด ๊ฑธ๊ธฐ

์กฐ๊ฑด์€ where ๋ฉ”์„œ๋“œ๋กœ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฌธ์ž์—ด๋กœ ์กฐ๊ฑด์ ˆ ํ…์ŠคํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๊ณ , ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๊ฐ’์— ๋Œ€ํ•œ replacement๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฟผ๋ฆฌ๊ฐ€ ํ„ฐ์ง€์ง€ ์•Š๊ฒŒ escapeํ•ด์„œ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž˜ ๋™์ž‘ํ•  ๊ฒƒ์ด๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ ์กฐ๊ฑด์„ ๊ฑธ๊ณ  ์‹ถ๋‹ค๋ฉด addWhere๋กœ ์กฐ๊ฑด์ ˆ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ, replacement ๊ฐ’์€ ๋ฉ”์„œ๋“œ๋ณ„๋กœ ๋”ฐ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜์„ ๊ธฐ์–ตํ•˜์ž.
๋งŒ์•ฝ ์ €๊ธฐ ๋‘๋ฒˆ์งธ addWhere์—์„œ ๋‘๋ฒˆ์งธ ์ธ์ž ๊ฐ์ฒด์— id๋ฅผ ํ•˜๋‚˜ ๋” ์“ด๋‹ค๋ฉด ์ด์ „์˜ id์— ๋ฎ์–ด์จ๋ฒ„๋ฆด ๊ฒƒ์ด๋‹ค.

์•„๋ฌดํŠผ, ์ž˜ ๋™์ž‘ํ•  ๊ฒƒ์ด๋‹ค.




์ •๋ ฌํ•˜๊ธฐ

์ •๋ ฌ์€ orderby์™€ addOrderby ๋ฉ”์„œ๋“œ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์ •๋ ฌ๊ธฐ์ค€๊ฐ’์„, ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ 'ASC'๋‚˜ 'DESC' ํ…์ŠคํŠธ๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ค˜์•ผ ํ•œ๋‹ค.

๋ฉ”ํƒ€ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ข€ ํ•ด๋’€๋Š”์ง€ ๋Œ€๋ฌธ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด ๋นจ๊ฐ„์ค„์„ ๊ธ‹๋”๋ผ

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ๋Œ์•„๊ฐˆ ๊ฒƒ์ด๋‹ค.

addOrderby๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.




offset & limit

๋ณดํ†ต ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋“ฑ์„ ์ฒ˜๋ฆฌํ• ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
offset์€ ์–ด๋””๋ถ€ํ„ฐ ์ฝ์–ด ๊ฐ€์ ธ์˜ฌ์ง€, limit๋Š” ๋ช‡๊ฐœ๊นŒ์ง€ ๊ฐ€์ ธ์˜ฌ์ง€๋ฅผ ์ง€์ •ํ•œ๋‹ค.




๊ทธ๋ฃน

๊ทธ๋ฃน์€ groupBy์™€ addGroupBy๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ƒฅ ๋ฌธ์ž์—ด๋กœ groupbyํ•  ์ปฌ๋Ÿผ๋ช…์„ ์จ์ฃผ๋ฉด ๋œ๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ๋ฉด addGroupBy๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

groupy๋กœ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๊ฐ™์€ ์œ ์ €๊ฐ€ ๋ช‡๋ช…์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ง ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์งค ์ˆ˜ ์žˆ๋‹ค.

join๊ณผ ๊ด€๊ณ„ ์„ค์ •์€ ๋ณ„๋„ ํฌ์ŠคํŠธ๋กœ ๋‹ค๋ค„๋ณผ ๊ฒƒ์ด๋‹ค.