by 보들윤 [SQL Query] mysql join count [2022.09.02 17:20:29]
[상품 테이블]과 해당 상품의 [후기 작성 테이블]을 조회하여,
현재 쿼리를 실행하는(로그인한 회원을 의미) 회원이 상품에 몇개의 후기를 작성했고,
앞으로 몇개의 상품에 후기를 작성할 수 있는지 구하고 싶습니다.
[item_table]
it_id | it_name | item_price |
11111111 | 바나나 | 10000 |
22222222 | 키위 | 20000 |
33333333 | 사과 | 5000 |
44444444 | 오렌지 | 5000 |
[item_use_table]
is_id(autoincrement) | it_id | mb_id(회원아이디) |
1 | 11111111 | member |
2 | 11111111 | member |
3 | 22222222 | member |
4 | 33333333 | member |
쿼리 결과 (예)
is_use_cnt(작성한 후기의 개수) | is_not_use_cnt(후기를 작성안한 상품의 개수) |
3 | 1 |
결과에서 is_use_cnt가 3인 이유는
mb_id = 'member' 가 [상품 후기 테이블]에 4개의 데이터가 있지만,
it_id(상품코드) 가 11111111인 후기를 2건(중복가능)을 달았기 때문에, 1건이라고 하였습니다.
is_not_use_cnt가 1인 이유는
후기를 작성하지않은 상품의 개수(it_id 고유번호를 기준)를 가져와서, 추후 몇개의 상품에 후기를 달수있다 라고 하는데에 사용하려합니다.
[실패...분석]
- 2개의 테이블을 join하면 될 것 같은데... (2시간째 실패했습니다. ㅠㅠ)
- join을 한다면, select (?????) from item_table a left join item_use_table b on (a.it_id = b.it_id) 형식으로 해봤었습니다.
- where절에는 where b.mb_id='member' (아마 이 부분이 이상한것도 같습니다. b.mb_id가 member라면, 결국 item_use_table에서 걸리지니까요..)