xml
기본 :
코드부여 ( 시퀀스 만들기 )
grocery 테이블
create sequence gro_seq increment by 1 start with 1
shoppingbag 테이블
create sequence shopbag_seq increment by 1 start with 1
1. 로그인 - user / loginCheck
- 전단계 : 로그인페이지에서 아이디와 비밀번호를 입력하도록 하고 로그인 버튼을 클릭한다.
-
select count(*)
from member3
where id(회원아이디) = 'a' AND pass(패스워드) = 'd'
결과가 < 0 -> 존재하지 않는 회원입니다.
결과가 > 0 이면 존재하는 회원입니다.
-장기 미사용자를 구별하기 위해서 마지막로그인일자를 컬럼으로 넣었다
로그인을 할때마다 update를 해줘야 한다.
user /id="loginDateUpdate"
UPDATE member3 set lastlogin = sysdate where id = '입력한아이디값' and pass='입력한비밀번호값'
2. 로그인시 가입정보에 따라 일반 요리사 관리자 페이지로 넘어간다
user/id="loginGradeCodeSelect"
SELECT gradecode(회원구분코드)
FROM member3
WHERE id(회원아이디 ) = 'a' and pass(패스워드 ) = 'd'
결과가 일반인지 요리사인지 관리자인지에 따라서 다른 페이지를 보여준다.
3. 개인정보 입력
//일반회원/관리자(회원가입)
user/id="joinInsert"
INSERT INTO member3 (id , name, pass, email, phone, gradecode, point, lastlogin ) VALUES (아이디입력값, 이름입력값, 비밀번호입력값, 이메일입력값, 전화번호입력값, 회원구분코드(일반/요리사/관리자 , 0 , sysdate )
//요리사
id="joinInsertC"
INSERT INTO member3 VALUES ( #ID#, #NAME#, #PASS#, #EMAIL#, #PHONE#,
'C' , 0 , sysdate , #ZIP# , #ADDR1# , #ADDR2# , #WORK_COD# )
user/id="joinChargeInsert"
INSERT INTO charge (id , cha, cdate) values ('입력한 아이디' , '0', sysdate)
//회원가입할때 반드시 charge 테이블에 생성을 해줘야 한다. ( 충전시 update만 //사용하기 위해서)
4.아이디 찾기
user/id="findIdSelect"
1) 이메일로 찾기
SELECT id(회원아이디)
FROM member3
WHERE email(이메일) = '이메일입력값'
uesr/id="findIdSelectT"
2) 전화번호로 찾기
SELECT id(회원아이디)
FROM member3
WHERE phone(전화번호) = '전화번호입력값'
또는
user/id="findIdSelectET"
3) 전화번호와 이메일 두개로 찾기
SELECT id(회원아이디)
FROM member3
WHERE phone(전화번호) = '전화번호입력값'
AND WHERE email(이메일) = '이메일입력값'
user/id="findPass"
5. 비밀번호 찾기
SELECT pass
FROM member3
WHERE email(이메일) = '이메일입력값'
AND id(아이디) = '아이디입력값'
//비밀번호를 암호코드로 설정하여 ( 암호화 ) 보내기.
또는 임시비밀번호 생성해서 이메일로 보내기
user/id="viewOneMemSelect"
6.-1 본인 회원 정보 조회
SELECT name, email, phone ,
DECODE (gradecode , 'A' , '일반회원' , 'C' , '요리사' , 'M' , '관리자') "회원구분" ,
point , lastlogin , zip || addr1 || addr2 "주소" , , work_cod
FROM member3
WHERE id = 'coral';
user/ id="memberGradeSelect"
6-2. 구매횟수에 따른 회원분류 (개인회원이 조회가능)
//결제상태는 결제완료는 n 주문완료는 d
SELECT ( CASE WHEN COUNT(order_cod) >= '200' THEN '다이아몬드'
WHEN COUNT(order_cod) >= '150' THEN '사파이어'
WHEN COUNT(order_cod) >= '100' THEN '골드'
WHEN COUNT(order_cod) >= '50' THEN '실버'
WHEN COUNT(order_cod) >= '0' THEN '일반'
ELSE 'VVIP'
END ) grade
FROM order3
WHERE order_status = 'd' AND id = #id#
GROUP BY id
7. 본인 회원정보 수정
1) 패스워드 변경
UPDATE member3 SET pass = '입력받은비밀번호' WHERE id = '입력받은아이디값'
2)이메일 변경
UPDATE member3 SET email = '입력받은이메일' WHERE id = '입력받은아이디값
3) 전화번호변경
UPDATE member3 SET password = '입력받은비밀번호' WHERE id = '입력받은아이디값 AND pass= '입력받은패스워드'
8. 관리자권한으로 회원테이블에서 회원정보중 gradecode 수정
//일반회원은 A 요리사는 C 관리사는 M
1)일반회원으로 변경
UPDATE 회원 SET gradecode(회원구분코드) = 'A' WHERE id = '입력받은아이디값'
2)요리사로 변경
UPDATE 회원 SET gradecode(회원구분코드) = 'C' WHERE id = '입력받은아이디값'
9. 회원탈퇴
DELETE member3 WHERE id = '입력받은아이디' AND password = '입력받은비밀번호'
**주문하기
쇼핑카트는 주문과 동시에 사라지며 회원이 추가하고 뺴는 것이 자연스럽고 회원한명당 1덩어리의 장바구니만 가지고 있다.
1. 장바구니에 있는 상품들이 -> order 테이블로 이동한다.
// 주문은 여러개이고 1분간격으로 1초간격으로 다른 결제날짜가 찍혀서, 통장 같은 주문만 모아서 보기는 어려움이 따른다 (한계점) . 같은날짜에 주문한 목록은 주문을 구분하지 말고 한번에 조회가 되는거로 가정한다..
SELECT shoppingbag.grocery_cod grocery_cod , grocery.g_name name , grocery.g_price price
FROM shoppingbag , grocery
WHERE shoppingbag.id = 'a'
AND shoppingbag.grocery_cod = grocery.grocery_cod
이테이블에 나온 것중 grocery_cod 랑 g_price 를 2번째의 insert 문장 인자에 넣어준다. (갯수만큼 여러번 )
2. 주문하는 동시에 order 테이블에 입력
INSERT INTO order3 (order_cod, pay_date, order_status , id, pr_cod, order_price , pr_name ) values ( o || TO_CHAR(sysdate , YYYY.MM.DD) || id , sysdate, N , '현재로그인된 아이디' , '장바구니에있던 식료품코드' , '장바구니에 있던 식료품가격' , '장바구니에 있던 식료품 이름' )
//세가지를 추가한 이유는 장바구니가 계속사라지기 때문에 이름, 가격, 코드를 저장해야 조회가 가능
3. 장바구니 목록삭제
DELETE shoppingbag where id = 'a'
//장바구니는 주문하면 전체가 삭제된다.
//고객이 구매확정을 하게 되면 order_status 가 결제완료인 'N' 에서 주문완료인 'D' 로 변경된다.
10. 본인의 결제내역 확인
1) 날짜별 주문 조회
SELECT order_cod(주문코드) , paydate(결제날짜), DECODE(ORDER_STATUS , 'N' , '결제완료' , 'D', '최종주문완료') order_status, price(상품가격), pr_name(상품명)
FROM order
WHERE id = '입력한아이디'
AND pay_date = TO_DATE('입력날짜' , 'YYYY/MM/DD')
//주문제품구분은 c(취소), d(최종구매확정완료), p(결제완료) 가 있다.
또는
2)언제부터 언제까지 주문내역 조회하기
SELECT order_cod(주문코드) , pr_name(상품명) , pay_date(결제날짜), price(금액), DECODE(ORDER_STATUS , 'N' , '결제완료' , 'D', '최종주문완료') order_status
FROM order
WHERE id= '입력한아이디'
AND pay_date
BETWEEN TO_DATE('입력날짜1' , 'YYYY/MM/DD') AND TO_DATE('입력날짜2' , 'YYYY/MM/DD')
3) 일자별 전체 주문 조회
SELECT order_cod(주문코드) , pr_name(상품명) , pay_date(결제날짜), order_price(금액),
DECODE(ORDER_STATUS , 'N' , '결제완료' , 'D', '최종주문완료') order_status
FROM order
WHERE id = '입력한아이디'
GROUP BY pay_date
11.장바구니 추가
INSERT INTO VALUES( G || shopbag_seq , '현재로그인한아이디' , 'GROCERY테이블에서 온 G_PRICE' , 'GROCERY 테이블에서온 G_NAME , GROCERY테이블에서온 GROCERY_COD' )
12. 장바구니 내역 삭제
1) 식료품 장바구니 내역 중 1개 삭제
사용자가 클릭하면 방금 클릭한 식료품의 식료품코드를 받아온다.
DELETE shoppingbag WHERE grocery_cod(식료품코드) = '받아온 식료품코드'
13. 게시판 문의 사항 등록
분류코드는 '일반문의 n 상품문의 p 시스템문의 s 이다 '
INSERT INTO question () values ( 'Q' || sysdate || id , '입력받은아이디' , '입력받은 내용' , '선택한 분류코드' )
15. 관리자가 공지사항 등록
INSERT INTO notice () values ( 'N' || sysdate || m_name , '입력받은제목' , '입력받은 내용' , '관리자이름' , sysdate )
16. 게시판에 대한 문의사항 등록
INSERT INTO question values ( 'q' || sysdate || id , '입력받은아이디' ,'입력받은 문의내용 ' , 'S')
17. 문의 게시판에 충전에 대한 문의 (분류가 필요할 수도..? )
INSERT INTO question values ( 'q' || sysdate || id , '입력받은아이디' ,'입력받은 문의내용 ' , 'C')
18. 문의게시판답글등록( 관리자만 가능)
INSERT INTO answer values( 'a' || sysdate || manager_cod , '관련문의코드FK' , '관리자코드' , '입력할답글내용')
19. 레시피게시판 등록
INSERT INTO recipeb values ('rb' || sysdate, 'cana2' , '버팔로윙 / 칠면조 요리 / 치즈버거 / 구벤샌드위치 / 시카고피자' , 0 , null, '미국의 홈파티 화려하게 즐기자');
20. 레시피게시판 삭제
DELETE recipeb WHERE id = '현재로그인아이디' AND rb_cod = '레시피게시판코드'
21. 레시피게시판 검색
SELECT rb_cod , id , rb_content , rb_comend , rb_title
FROM recipeb
WHERE rb_title LIKE '%검색원하는 제목값%'
22. 레시피 게시판 전체 검색
SELECT *
FROM recipeb
22.레시피게시판 수정
UPDATE recipeb set pb_content = '수정하고싶은내용' WHERE id="현재로그인한회원id" AND rb_cod(레시피게시판코드 ) ="현재수정하고자하는게시판클릭값"
23. 레시피 답글 등록
INSERT INTO recipea values ( 'RA' || SYSDATE || ID , '클릭한 레시피게시판의 게시판코드값' , '입력받은 아이디' , '입력받은 내용' , sysdate)
24 레시피 답글 삭제
DELETE recipea where id="현재로그인된값" AND ba_cod(리뷰코드) = '클릭한 현재리뷰코드값'
25. 레시피 답글 수정
UPDATE recipea SET ba_content= '입력받은내용' where id="입력받은아이디" AND ba_cod(리뷰코드) = '클릭한값'
30 다른사람의 레시피에 평점 부여 (1 ~ 5 까지 )
//1사람이 별점을주면 원래 있던 별점과 더하고 평균을 구한 값으로 update 한다.
UPDATE recipeb set rb_comend = ((rb_comend + '원하는값1~5') / 2) WHERE tb_cod = '클릭한게시판코드'
31 레시피 신고하면 -> 관리자로 연결 ->
상태만 변경된다.
신고하면 X 코드가 신고컬럼에 부여된다.
UPDATE recipeb SET rb_alert = 'X' WHERE rb_cod = '클릭한레시피게시판코드'
관리자가 부적절한 것이라고 판단된후에는 DELETE 로 지운다. ( 관리자만사용 )
26. 관리자가 판매할 식료품 등록
INSERT INTO grocery (grocery_cod , g_name , g_price , seller_cod) VALUES (G || gro_seq, 값2, 값3, 값4)
27. 회원들이나 관리자가 구매할 수 있는 전체 식료품 조회
SELECT grocery_cod , g_name, g_price , seller_cod
FROM grocery
28. 관리자가 식료품 삭제
DELETE grocery where grocery_cod = '입력받은식료품코드값'
29 관리자가 식료품 수정
1) 식료품 코드 수정
UPDATE grocery SET grocery_cod(식료품코드) = '입력받은식료품코드값' WHERE grocery_cod(식료품코드) ='입력받은원래식료품코드'
2) 식료품명 수정
UPDATE grocery SET g_name(식료품명) = '입력받은식료품명' WHERE grocery_cod(식료품코드) = '입력받은식료품코드'
3) 식료품가격 수정
UPDATE grocery SET g_price(식료품가격) = '입력받은식료품가격' WHERE grocery_cod(식료품코드) = '입력받은식료품코드'
33. 공지사항 조회
1) 전체 공지사항 조회하기
SELECT n_cod(공지사항코드) , n_title(제목) , n_content(내용) , n_startdate(작성일)
FROM notice
2) 공지사항코드로 조회하기
SELECT n_cod(공지사항코드) , n_title(제목) , n_content(내용) , n_startdate(작성일)
FROM notice
WHERE n_cod = '입력받은공지사항코드'
3) 공지사항 제목으로 조회하기
SELECT n_cod(공지사항코드) , n_title(제목) , n_content(내용) , n_startdate(작성일)
FROM notice
WHERE n_title(제목) LIKE '%입력받은내용%'
34. 공지사항 삭제(관리자만 가능하다)
DELETE notice WHERE n_cod ='입력받은 공지사항코드' and m_name = '입력받은관리자코드'
35. 공지사항 수정(관리자만 가능하다 )
UPDATE 공지사항 SET n_content = '입력받은내용' WHERE n_cod = '입력받은공지사항코드'
36) 이벤트 등록
INSERT INTO event values ( 'E' || sysdate || '이벤트명' , '원하는 이벤트명입력값' , 'TO_DATE('원하는날짜' , 'YYYY.MM.DD')' , 'TO_DATE('원하는날짜' , 'YYYY.MM.DD')' , '경품은식료품코드에서 따서 입력' )
37. 이벤트 삭제 (관리자만 가능)
DELETE event WHERE eventcod = '입력받은이벤트코드'
또는 이벤트명으로 삭제 가능
DELETE event WHERE eventname(이벤트이름) ='입력받은 이벤트이름'
40. 총 매출/ 상품별 매출 확인
1) 총매출확인하기
SELECT SUM(oder_price) order_price
FROM order
WHERE ORDERSTATUS = 'D'
2) 기간별 총 매출 확인하기 , 일별매출확인하기 (동일한날짜입력해주면가능하다)
SELECT SUM(oder_price) order_price
FROM order
WHERE order_status = 'D'
AND TO_CHAR(pay_date , 'YYYY.MM.DD') BETWEEN '입력받은날짜YYYY.MM.DD' AND
'입력받은날짜YYYY.MM/DD'
// 입력받은 날짜1 과 입력받은 날짜2를 동일하게 입력하면 그날짜에 해당하는 내용이 조회가 된다. 따라서 일별매출 확인은 위에 쿼리로 사용이 가능하다
//그러나 월별이나 년별은 입력받은날짜1과 2를 동일한날짜로 yyyy.mm 만치커나 yyyy 만 치면 범위가 나오지 않아서 년별과 월별은 따로 쿼리를 만들어준다.
3) 월별 매출 확인하기
SELECT SUM(oder_price) order_price
FROM order
WHERE order_status = 'D'
AND TO_CHAR( pay_date , 'YYYY.MM') = '입력받은날짜인 YYYY.MM'
4) 년별 매출 확인하기
SELECT SUM(oder_price) order_price
FROM order
WHERE order_status = 'D'
AND TO_CHAR(pay_date , 'YYYY') = '입력받은날짜인 YYYY'
5) 상품별 매출 확인
SELECT SUM(oder_price) order_price
FROM order
WHERE order_status = 'D'
AND pr_cod = '입력받은상품명'
6) 클래스제품 총매출 확인하기
//우리 클래스 장바구니가 없어서 확인 불가...
SELECT SUM(oder_price) order_price
FROM order
WHERE pr_cod LIKE 'C%'
7) 식료품제품 총매출 확인하기
//우리 클래스 장바구니가 없어서 확인 불가...
SELECT SUM(oder_price) order_price
FROM order
WHERE pr_cod LIKE 'G%'
41. 판매자별로 매출 확인(식료품만 해당)
SELECT grocery.seller_cod, SUM(oder_price) order_price
FROM order, grocery
WHERE order.pr_cod = grocery.grocery_cod
GROUP BY grocery.seller_cod
장바구니와 주문은 pk 컬럼으로 연결되어 있지 않고 주문을 등록할때 장바구니의 것을 가지고 올 예정이다.
42. 장바구니에 있는 제품 결제하기 (결제와 동시에 포인트 결제가 된다 ) 결제 전에 포인트가 충분한지 본다.
//아래는 하나의 PROCESS 이다.
1) 결제전에 충전 포인트가 구매하기에 충분한지 확인
설명 : P는 회원의 현재가지고 있는 잔액인 POINT 이다.
: S는 회원의 현재 장바구니의 총합니다.
SELECT CASE WHEN P.point >= S.sum THEN '구매가능' WHEN P.point < S.sum THEN '잔액부족' ELSE '오류' "able"
FROM
(SELECT point
FROM member3
WHERE id = '주어진 회원아이디') P ,
(SELECT sum(pr_price) sum
FROM shoppingbag
WHERE id = '주어진회원아이디') S
만약 여기 값이 결제가능이 나오면 다음단계로 넘어가고 잔액부족이 나오면 alert를 띄워서 잔액이 부족하다고 충전하라는 메시지를 띄운다.
2) 결제 완료
앞의 식이 부합할때만 다음 과정으로 넘어간다.
3) 결제와 동시에 포인트에서 결제한 금액만큼 빼줘야 한다.
UPDATE member3 SET point = member3.point - (SELECT sum(price) sum
FROM shoppingbag
WHERE id = '주어진회원아이디')
43. 전체 리뷰 댓글 조회 (리뷰에대한 댓글은 전체조회만 필요하다 )
SELECT cr_cod, id , cr_startdate, class_cod(원래의클래스코드)
FROM classr
44. 클래스 리뷰 등록
INSERT INTO classr values('C' || SYSDATE || ID , sysdate, '클릭한 상위 클래스코드' ,'현재로그인된 id' , '입력받은 등록할 내용' )
45. 클래스리뷰 삭제(본인만)
//본인확인절차는 자바로 구현
//삭제클릭버튼을 누르면 클래스리뷰코드를 받는다. (this)로 구현 예상
DELETE classr WHERE cr_cod = '입력받은클래스리뷰코드' AND id='현재로그인된아이디'
46. 클래스리뷰 수정(본인만)
//본인확인절차는 자바로 구현
UPDATE classr SET cr_startdate = sysdate , cr_content = '입력하는 내용' WHERE id = '현재로그인된 id'
44. 충전하기
1) 충전point 를 입력받아서 입력한다.
//회원가입할때 동시에 각회원당 charge 테이블을 꼭 생성한 상태이다.
UPDATE charge SET charge = '충전금액입력값' , charge_date = sysdate WHERE id = '현재로그인한아이디'
2) 실시간으로 회원데이터의 포인트에 반영이 된다.
UPDATE member3 SET point = point + 입력한충전금액 WHERE id = '현재로그인중인 회원아이디'
45. 클래스 구매 : 구매버튼을 클릭하면 바로 order 테이블로간다.
INSERT INTO order values (O || SYSDATE || id , sysdaye , 'N' , '현재로그인된아이디' , '현재클릭한 클래스의 CLASS_COD' , '현재클릭한클래스의 CLASS_PRICE' , '현재클릭한클래스의 이름 CLASS_NAME')
//클래스매출 (회원이(판매자))보기 sql 짜기
댓글
댓글 쓰기