본문 바로가기
활동/팀 프로젝트

팀 프로젝트[고기당] : (4.내 작업)(10)검색 필터, 합집합과 교집합

by dokii 2021. 1. 18.
728x90

처음 연습삼아 지역만으로 검색필터를 만들고,

그 다음은 좀더 쉽게 갈수 있을줄 알았는데.

장장 3일에 걸쳐 작업이 이루어졌다.

 

꽤 많이했다 생각도 했고, 한 스텝 더 나가면 되겠지 자만했는지

3일동안 작업하면서 스트레스에 블로그도 쓰지 못했다 ^^... (반성..)

 


mybatis sql을 얼마나 검색했는지 모른다...

choose , if 등을 사용해 보았으나 원하는 결과를 도출할수 없었고...

깔끔하고 정석인 방법(?)으로 정말 정말하고 싶었는데,

나만하는 프로젝트도 아니고, 언제까지 붙잡고있을수도 없고.

욕심은 살포시 내려놓고,

처음에 썼던 foreach문을 활용해 보기로 하였다.

 


그러다 중간에 조별 회의를 했다.

그런데...

'서울'/ '경기'/ '강원' 등으로 받는줄알았던 주소가 (s_addr)

'서울 특별시 종로구 669 ' 로 풀네임으로 찍히는것...

카카오 api사용으로 인하여 내가 코드를 추가하는 것이 답이었다.

 

천천히 해당데이터에서 앞자리 두개만 가져오는 코드를 고려하여 짰다.

아무래도 문장이 길어지다보니 헷갈렸다.

하지만 많이 어렵진 않았다 ! 정신만 똑띠 차리고 천천히.하면..됨.

 

xml파일에 쿼리문 넣기전에 오라클에서 충분히 쿼리문을 짜보면서 확인하여 대입하였다.

지역을 서울특별시 종로구 669동 으로 가정하고 진행했다.

select distinct mr.img , mr.meat , mr.price, sr.s_name, substr(sr.s_addr,1,2)  
	from menu_reg mr inner join shop_reg sr on mr.s_num=sr.s_num where  
		substr(sr.s_addr,1,2) ='서울';

추출해본 결과.

조인해서 잘 나온다.

 

 

inner join으로 조인하였으며,

from 안에 조건을 제한하기 위하여 select로 다시 조건을 주었다. 

쿼리문이 생각보다 너무 복잡했다. 아쉽다.

 


그리고 나서 테스트해보니,

첫화면에서 필수적으로 에러가 뜬다.

지역과 품목이 모두 비어있기 때문.

지역과 품목을 적어도 한개씩 선택하기 이전에는 에러창이 뜬다.

총 두번의 에러창이 필수적으로 뜨는것이다.

 

어떻게 하면 좋을까?

스크립트 코드를 수정해도 좋겠지만,

고민하다가 방법을 살짝 바꾸었다.

1. 처음부터 '지역'의 체크박스가 모두 체크되어있을것. 즉 모든 지역에대한 값이 담겨있다.

2. 그 다음, 품목은 사용자에 의해 선택된다.

처음 세개가 체크되어 화면에 나타난다.

 


원하는대로 데이터가 모두 출력된다. !!!

1. 지역에서 선택한 항목에 대해서는 합집합

2. 서로다른 항목에대한 선택에 대해서는 교집합

3. 체크박스를 누르자마자 페이지 변경없이 데이터출력 

추가로 원하는 기능(완료)

1. 필터는 지역/품목/부위를 선택하여 적용시킬수 있다. 처음 해당 리스트 페이지 접속시 "전체"가 체크되며 나타난다.
(필터 항목 2개로 변경됨, 전체가 체크되며, 전체 값이 담겨져 출력된다.) (완료)

2. 체크박스를 누르자마자 필터조건이 적용되어 하단에 리스트가 뜰것.(완료)
3. 각각의 항목은 선택할수도, 미 선택일수도 있다. (단, 미선택일 시에는 디폴트 값이 나온다. 디폴트값은 전체임.)
4. 부위는 소고기/돼지고기별로 각각 다르므로 품목선택시 부위항목이 변한다.

 

728x90

댓글