달력

9

« 2024/9 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
이것도 어디서 퍼다둔건지 모름.

조건문에 이중 쿼리문을 쓰는 방법입니다.

select mb_id, count(mb_id) as cnt from `articles` where mb_id IN (select mb_id from `member_table` where open='1') group by mb_id order by cnt DESC

자신의 글을 공개하겠다고 동의한 회원들의 글의 개수를 가져오는 내용입니다. 여기서 눈여겨볼 부분은 굵은 글씨 부분인데요, 빨간 부분은 `member_table`에서 open=1 값을 가진 회원들의 목록을 뽑아온 것이고, where ~ IN ~ 문을 사용해서 mb_id가 그 동의한 회원 목록에 있는지를 확인하도록 조건문을 작성했습니다.

아래 글은 1번 테이블 내에서 1번 조건과 2번 조건을 만족하는 결과를 추려냈다면,
이 방법은 1번 테이블에서 1번 조건을 만족하는 결과 중에서, 2번 테이블에서 2번 조건을 만족하는 결과를 가져오는 것입니다. 서로 다른 테이블에서 서로 다른 조건을 만족한 결과를 가져온 것이지요.


지금까지 쿼리를 한 번 날리고 그 결과를 while()문으로 돌리면서 각각 다시 쿼리를 날리는 방법을 쓰고 있던 제 자신이 갑자기 부끄러워집니다. 저같은 초보분들도 "머릿속에서 체계화시킬 수 있는 쿼리는 하나의 쿼리문으로 처리할 수 있다"라고 명심하고 조금만 공부하시면 로딩 속도와 서버 부하를 개선시킬 수 있을 겁니다.^^
:
Posted by 비개인오후