💻개발/SQL

계층 구조에 대한 DB를 찾다가 알게 된 구조흔히 사용하는 인접리스트가 있는데 DB에서 자식만 가져오는 것이 아닌 자손까지 가져온다고 했을 때, 계층이 너무 깊으면 self join을 많이해서 쿼리 구조가 복잡하다는 단점이 있다. 그래서 다른 방법을 찾다가 여기까지 왔다.  자기 자신을 포함해서 자식 노드를 모두 저장하는 DB 형태 예를 들어 계층구조가 이런 형태면 DB형태가 ancestor, descendant, length가 저장이 된다. length는 우리가 dfs를 풀 때 depth를 사용하는데 이와 같다고 생각하면 될 것 같다.  그래서 만약 내가 조상일 때 ancestor=1일때라는 조건을 걸어서 select를 하면 되니까 자손을 모두 가져오기도 편하고자식을 가져올 때도 depth=1이라는 조..
SQL문제를 풀다가 알게되었는데 별칭이 있는 컬럼은 WHERE절에서 사용하지 못 한다. 찾아보니 사용하지 못 하는 이유는 SQL의 실행순서때문이라고 한다. SQL의 실행순서는 아래와 같다. FROM / JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT 보다시피 SELECT절보다 WHERE절이 먼저 실행이 된다. 그렇기 때문에 WHERE절에서 별칭이 붙은 컬럼을 이용하면 오류가 발생하는 것! SELECT 이전에는 별칭을 사용할 수 없지만, 그 후부터는 별칭이 사용이 가능하다. 그런데 내가 풀은 문제에서는 HAVING에서 별칭을 이용했다. HAVING 역시 SELECT 전에 수행이 되는데 어떻게 이건 오류가 안 날까?에 대한 의문이 있었다..
i_zzy
'💻개발/SQL' 카테고리의 글 목록