개발을 하다보면, 코드의 정렬이 처음에는 중요해 보이지 않다가도 소스 량이 많이 질수록 라인이 길어 질수록 이 들여쓰기가 안 되어 있으면 아주 큰 불편을 겪을 때가 많습니다.
특히나, 한 2~3 일만 코드를 보지 않으면 '이게 정말 내가 짠 코드가 맞을까?' 하고 스스로에게 반문하게 되는 안타까운 기억들로 오늘도 궁시렁 대는 내 모습을 만들고 있다는 것이죠.
개발 소스 코드 뿐만 아니라 이 SQL 언어를 다루면 오히려 더 이 들여쓰기가 중요 해 질수도 있습니다.
왜냐하면, 실행 과정이 바로 일어나니까 길게 들여쓰는 문장들이 눈을 마구 어지럽히게 될테니까요
언어로 소스코드를 작성 할 때, 소스 코드의 들여쓰기가 제일 중요한 요소 일 것 같네요...
물론 이건 개인적인 의견입니다.
파이썬이나 여타 다른 소위 스크립트 언어들을 좋아하시는 분들은 아시겠지만 바로 내가 어떤 중간과정을 보지 않고도 결과를 확인 할 수 있다는 것에 매료가 되는데요. 초창기 부터 이 SQL 언어를 거의 모든 개발자들이 좋아 하하는 커다란 이유가 아닐까 합니다.
그리고 잘 정된 된 문장만이 수증기가 올라오는 허기진 내 머리를 식혀 줄 수 있다는 생각도 듭니다.
다음은 스택오버플로우에 나온 들여쓰기 내용들을 좀 정리 해 보았습니다.
질문 내용:
다음 SQL 문장을 어떻게 하면 들여쓰기가 잘 된 문장으로 만들 수 있을까요?
SELECT column1, column2
FROM table1
WHERE column3 IN
(
SELECT TOP(1) column4
FROM table2
INNER JOIN table3
ON table2.column1 = table3.column1
)
채택 답변:
SELECT column1
, column2
FROM table1
WHERE column3 IN
(
SELECT TOP(1) column4
FROM table2
INNER JOIN table3
ON table2.column1 = table3.column1
)
모든 쉼표는 앞에다 쓸거예요, 이 방법은 SQL 에디터가 뱉는 라인 X에 오류 났어요를 보지 않을 테니까
아래 예는 SQL 문장을 위와 같이 쓰지 않는 사람들을 위한 것이며, 쉼표가 누락 된 문장 입니다.
SELECT sdcolumn123
, dscolumn234
, sdcolumn343
, ffcolumn434
, sdcolumn543
, bvcolumn645
vccolumn754
, cccolumn834
, vvcolumn954
, cvcolumn104
FROM table1
WHERE column3 IN
(
...
)
SELECT sdcolumn123, dscolumn234, asdcolumn345, dscolumn456, ascolumn554, gfcolumn645 sdcolumn754, fdcolumn845, sdcolumn954, fdcolumn1054
FROM table1
WHERE column3 IN
(
...
)
다른 답변 1:
SELECT column1, column2
FROM table
WHERE column3 IN (
SELECT TOP(1) column4
FROM table2
INNER JOIN table3 ON table2.column1 = table3.column1
)
다른 답변 2:
SELECT
column1,
column2
FROM
table1
WHERE
column3 IN
(
SELECT TOP(1)
column4
FROM
table2
INNER JOIN
table3
ON table2.column1 = table3.column1
)
다른 답변 3:
SELECT column1,
column2
FROM table1
WHERE column3 IN (SELECT column4
FROM table2
JOIN table3
ON table2.column1 = table3.column1);
좀더 길어보이는 다른 답변 4:
SELECT
produtos_cesta.cod_produtos_cesta,
produtos.nome_pequeno,
tab_contagem.cont,
produtos_cesta.sku,
produtos_kits.sku_r AS sku_kit,
sku_final = CASE
WHEN produtos_kits.sku_r IS NOT NULL THEN produtos_kits.sku_r
ELSE produtos_cesta.sku
END,
estoque = CASE
WHEN produtos2.estoque IS NOT NULL THEN produtos2.estoque
ELSE produtos.estoque
END,
produtos_cesta.unidades as unidades1,
unidades_x_quantidade = CASE
WHEN produtos.cod_produtos_kits_tipo = 1 THEN CAST(produtos_cesta.quantidade * (produtos_cesta.unidades / tab_contagem.cont) * produtos_kits.quantidade AS int)
ELSE CAST(produtos_cesta.quantidade * produtos_cesta.unidades AS int)
END,
unidades = CASE
WHEN produtos.cod_produtos_kits_tipo = 1 THEN produtos_cesta.unidades / tab_contagem.cont * produtos_kits.quantidade
ELSE produtos_cesta.unidades
END,
unidades_parent = produtos_cesta.unidades,
produtos_cesta.quantidade,
produtos.controla_estoque,
produtos.status
FROM
produtos_cesta
INNER JOIN produtos
ON (produtos_cesta.sku = produtos.sku)
INNER JOIN produtos_pacotes
ON (produtos_cesta.sku = produtos_pacotes.sku)
INNER JOIN (
SELECT
produtos_cesta.cod_produtos_cesta,
cont = SUM(
CASE
WHEN produtos_kits.quantidade IS NOT NULL THEN produtos_kits.quantidade
ELSE 1
END
)
FROM
produtos_cesta
LEFT JOIN produtos_kits
ON (produtos_cesta.sku = produtos_kits.sku)
LEFT JOIN produtos
ON (produtos_cesta.sku = produtos.sku)
WHERE
shopper_id = '" + mscsShopperId + @"'
GROUP BY
produtos_cesta.cod_produtos_cesta,
produtos_cesta.sku,
produtos_cesta.unidades
)
AS tab_contagem
ON (produtos_cesta.cod_produtos_cesta = tab_contagem.cod_produtos_cesta)
LEFT JOIN produtos_kits
ON (produtos.sku = produtos_kits.sku)
LEFT JOIN produtos as produtos2
ON (produtos_kits.sku_r = produtos2.sku)
WHERE
shopper_id = '" + mscsShopperId + @"'
GROUP BY
produtos_cesta.cod_produtos_cesta,
tab_contagem.cont,
produtos_cesta.sku,
produtos_kits.sku_r,
produtos.cod_produtos_kits_tipo,
produtos2.estoque,
produtos.controla_estoque,
produtos.estoque,
produtos.status,
produtos.nome_pequeno,
produtos_cesta.unidades,
produtos_cesta.quantidade,
produtos_kits.quantidade
ORDER BY
produtos_cesta.sku,
produtos_cesta.unidades DESC
이상.
'프로그래밍' 카테고리의 다른 글
DLL 인젝션 - 간단한 예제 - notepad (0) | 2023.02.21 |
---|---|
열거 유형 - 정량적 연구 (0) | 2023.02.20 |
[JavaScript] console.log() 함수에 여러변수를 한줄로 ? (0) | 2023.02.15 |
[C++]WMI 질의 만들기-3 (0) | 2023.02.14 |
[C++]WMI 질의 만들기-2 (0) | 2023.02.13 |