SQL 쿼리 정리

Database/Oracle 2015. 11. 6. 01:45 by kira-master


같은 날 겹치는 이벤트 검색하기 


SELECT B.RENT_REASON , B.RENT_START , B.RENT_END , A.BDATE FROM 

(SELECT TO_DATE('20151120') AS BDATE FROM DUAL) A ,

(SELECT 

RENT_REASON,

TO_DATE(SUBSTR((RENT_START),1,10 )||' '|| SUBSTR((RENT_START),12,6 ) , 'YYYY-MM-DD HH12:MISS' ) AS RENT_START,

TO_DATE(SUBSTR((RENT_END),1,10 )||' '|| SUBSTR((RENT_END),12,6 ) , 'YYYY-MM-DD HH12:MISS' ) AS RENT_END

FROM RENT) B

WHERE A.BDATE BETWEEN RENT_START AND RENT_END


--- 결과 -----

회의실12 15/11/14 15/11/30 15/11/20

회의실 15/11/03 15/11/20 15/11/20





기간별 겹치는 이벤트 검색하기 


SELECT  B.RENT_NUM , B.RENT_REASON ,B.RENT_START, B.RENT_END , A.BDATE FROM

(SELECT TO_DATE('20151101') + (LEVEL-1)  AS BDATE FROM DUAL CONNECT BY LEVEL <= (TO_DATE('20151130') - TO_DATE('20151101')) +1) A , 

(SELECT 

RENT_NUM , 

RENT_REASON,

TO_DATE(SUBSTR((RENT_START),1,10 )||' '|| SUBSTR((RENT_START),12,6 ) , 'YYYY-MM-DD HH12:MISS' ) AS RENT_START,

TO_DATE(SUBSTR((RENT_END),1,10 )||' '|| SUBSTR((RENT_END),12,6 ) , 'YYYY-MM-DD HH12:MISS' ) AS RENT_END

FROM RENT) B

WHERE A.BDATE 

BETWEEN RENT_START

AND RENT_END

ORDER BY A.BDATE

;

-------------        결과      --------------------

39 회의실 15/11/03 15/11/20 15/11/04

39 회의실 15/11/03 15/11/20 15/11/05

39 회의실 15/11/03 15/11/20 15/11/06

39 회의실 15/11/03 15/11/20 15/11/07

39 회의실 15/11/03 15/11/20 15/11/08

39 회의실 15/11/03 15/11/20 15/11/09

39 회의실 15/11/03 15/11/20 15/11/10

39 회의실 15/11/03 15/11/20 15/11/11

39 회의실 15/11/03 15/11/20 15/11/12

39 회의실 15/11/03 15/11/20 15/11/13

39 회의실 15/11/03 15/11/20 15/11/14

39 회의실 15/11/03 15/11/20 15/11/15

38 회의실12 15/11/14 15/11/30 15/11/15

39 회의실 15/11/03 15/11/20 15/11/16

38 회의실12 15/11/14 15/11/30 15/11/16

39 회의실 15/11/03 15/11/20 15/11/17

38 회의실12 15/11/14 15/11/30 15/11/17

39 회의실 15/11/03 15/11/20 15/11/18

38 회의실12 15/11/14 15/11/30 15/11/18

39 회의실 15/11/03 15/11/20 15/11/19

38 회의실12 15/11/14 15/11/30 15/11/19

39 회의실 15/11/03 15/11/20 15/11/20

38 회의실12 15/11/14 15/11/30 15/11/20

38 회의실12 15/11/14 15/11/30 15/11/21

38 회의실12 15/11/14 15/11/30 15/11/22

38 회의실12 15/11/14 15/11/30 15/11/23

38 회의실12 15/11/14 15/11/30 15/11/24

38 회의실12 15/11/14 15/11/30 15/11/25

38 회의실12 15/11/14 15/11/30 15/11/26

38 회의실12 15/11/14 15/11/30 15/11/27

38 회의실12 15/11/14 15/11/30 15/11/28

38 회의실12 15/11/14 15/11/30 15/11/29

38 회의실12 15/11/14 15/11/30 15/11/30





----------------------------- 특정 기간에 있는 모든 이벤트 검색 ---------------------------------

SELECT DISTINCT B.RENT_NUM  FROM

(SELECT TO_DATE('20151101') + (LEVEL-1)  AS BDATE FROM DUAL CONNECT BY LEVEL <= (TO_DATE('20151130') - TO_DATE('20151101')) +1) A , 

(SELECT 

RENT_NUM , 

RENT_REASON,

TO_DATE(SUBSTR((RENT_START),1,10 )||' '|| SUBSTR((RENT_START),12,6 ) , 'YYYY-MM-DD HH12:MISS' ) AS RENT_START,

TO_DATE(SUBSTR((RENT_END),1,10 )||' '|| SUBSTR((RENT_END),12,6 ) , 'YYYY-MM-DD HH12:MISS' ) AS RENT_END

FROM RENT) B

WHERE A.BDATE 

BETWEEN RENT_START

AND RENT_END

;

----  결과 ----

이벤트 넘버 

38

39


스트럿츠2 GSON 을 통한 사용법

카테고리 없음 2015. 10. 22. 00:26 by kira-master




UPDATE 구현

카테고리 없음 2015. 10. 5. 19:36 by kira-master

1. memberUpdate.jsp

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
<script>
    function execDaumPostcode() {
        new daum.Postcode({
            oncomplete: function(data) {
                // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
 
                // 도로명 주소의 노출 규칙에 따라 주소를 조합한다.
                // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
                var fullRoadAddr = data.roadAddress; // 도로명 주소 변수
                var extraRoadAddr = ''// 도로명 조합형 주소 변수
 
                // 법정동명이 있을 경우 추가한다. (법정리는 제외)
                // 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
                if(data.bname !== '' && /[동||가]$/g.test(data.bname)){
                    extraRoadAddr += data.bname;
                }
                // 건물명이 있고, 공동주택일 경우 추가한다.
                if(data.buildingName !== '' && data.apartment === 'Y'){
                   extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
                }
                // 도로명, 지번 조합형 주소가 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
                if(extraRoadAddr !== ''){
                    extraRoadAddr = ' (' + extraRoadAddr + ')';
                }
                // 도로명, 지번 주소의 유무에 따라 해당 조합형 주소를 추가한다.
                if(fullRoadAddr !== ''){
                    fullRoadAddr += extraRoadAddr;
                }
 
                // 우편번호와 주소 정보를 해당 필드에 넣는다.
                document.getElementById('post').value = data.zonecode; //5자리 새우편번호 사용
                document.getElementById('roadAddress').value = fullRoadAddr;
                document.getElementById('jibunAddress').value = data.jibunAddress;
 
                // 사용자가 '선택 안함'을 클릭한 경우, 예상 주소라는 표시를 해준다.
                if(data.autoRoadAddress) {
                    //예상되는 도로명 주소에 조합형 주소를 추가한다.
                    var expRoadAddr = data.autoRoadAddress + extraRoadAddr;
                    document.getElementById('guide').innerHTML = '(예상 도로명 주소 : ' + expRoadAddr + ')';
 
                } else if(data.autoJibunAddress) {
                    var expJibunAddr = data.autoJibunAddress;
                    document.getElementById('guide').innerHTML = '(예상 지번 주소 : ' + expJibunAddr + ')';
 
                } else {
                    document.getElementById('guide').innerHTML = '';
                }
            }
        }).open();
    }
</script>
<script type="text/javascript" src="js/httpRequest.js"></script>
<script type="text/javascript">
function idChk() {
    var id = document.getElementById("id").value;
    var url = "command?cmd=findId&id="+id;
    sendRequest(url, null, res, "get");
}
 
function res() {
    if (xhr.readyState==4) {
        if (xhr.status==200) {
            var res = xhr.responseText;
            res =parseInt(res, 10);
            result(res);
        } else {
            alert("실패" +xhr.status);
        }
    }
}
 
function result(num) {
    if (num == 1) {
        alert("중복된 아이디 입니다.");
    } else {
        alert("사용해도 되는 아이디 입니다.");
    }
}
</script>
</head>
<body>
    <div id="wrap">
        <form action="command?cmd=memupdate&handler=update&num=${vo.num}" method="post" >
            <table>
                <tr>
                    <td>아이디</td>
                    <td>
                        <input type="text" name="id" id="id" value="${vo.id}">
                    </td>
 
                </tr>
                <tr>
                    <td>비밀번호</td>
                    <td><input type="text" name="pwd" id="pwd" value="${vo.pwd}"></td>
                </tr>
                <tr>
                    <td>이름</td>
                    <td><input type="text" name="name" id="name" value="${vo.name}"></td>
                </tr>
                <tr>
                    <td>우편번호</td>
                    <td>
                    <input type="text" id="post" name="post" value="${vo.post}" placeholder="우편번호">
                    <input type="button" onclick="execDaumPostcode()" value="우편번호 찾기"><br>
                    </td>
                </tr>
                <tr>
                    <td>주소</td>
                    <td>
                    <input type="text" name ="roadAddress" id="roadAddress" value="${vo.roadAddress}" placeholder="도로명주소">
                    <input type="text" name ="jibunAddress" id="jibunAddress" value="${vo.jibunaddress}" placeholder="지번주소">
                    <span id="guide" style="color:#999"></span>
                    </td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="수정"></td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>
 
cs


2. memberList.jsp



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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
    #wrap{ width: 800px; margin: auto;}
</style>
<script type="text/javascript">
    function del(num) {
        if (confirm("정말로 삭제를 하시겠습니까?")) {
            location = "command?cmd=memdelete&num="+num;
        }
        // alert(num);
        
    }
    
    function update(num) {
        location = "command?cmd=memupdate&handler=form&num="+num;
    }
</script>
</head>
<body>
    <div idwrap>
    <table style="border: 1px solid;">
        <tr style="border: 1px solid;">
            <td>번호</td>
            <td>이름</td>
            <td>주소</td>
        </tr>
    <c:forEach items="${list}" var="data">
        <tr style="border: 1px solid;">
            <td>${data.num}</td>
            <td>${data.name}</td>
            <td>${data.roadAddress}</td>
            <!--  td><a href="command?cmd=memdelete&num=${data.num}" >삭제<a></td-->
            <td><a href="javascript:update('${data.num}')" >수정<a></td>
            <td><a href="javascript:del('${data.num}')" >삭제<a></td>
        </tr>
    </c:forEach>
        <tr>
            <td colspan="4">
                <a href="memberjoin.jsp">가입폼</a>
            </td>
        </tr>
    </table>
    </div>
</body>
</html>
 
cs

3. MemDao

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package dao;
 
import java.util.List;
 
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
 
import service.FactoryService;
import vo.MemberVo;
 
public class MemDao {
    private static MemDao mDao;
    private MemDao(){}
    public static synchronized MemDao getDao(){
        if (mDao==null) mDao = new MemDao();
        return mDao;
    }
    
    public int addMem(MemberVo vo){
        SqlSession ss = FactoryService.getFatory().openSession();
        int res=ss.insert("mem.add",vo);
        ss.commit();
        ss.close();
        return res;
    }
    public int idchk(String id){
        SqlSession ss = FactoryService.getFatory().openSession();
        int res = ss.selectOne("mem.idchk", id);
        ss.close();
        return res;
    }
    
    public List<MemberVo> getList(){
        SqlSession ss = FactoryService.getFatory().openSession();
        List<MemberVo> list =ss.selectList("mem.memAll");
        return list;
    }
    
    public int update(MemberVo vo){
        SqlSession ss = FactoryService.getFatory().openSession();
        int res=ss.update("mem.memUp", vo);
        ss.commit();
        ss.close();
        return res;
    }
    
    public int delete(int num){
        SqlSession ss = FactoryService.getFatory().openSession();
        int res=ss.delete("mem.memDel", num);
        ss.commit();
        ss.close();
        return res;
        
    }
    
    public MemberVo getSelectOne(int num){
        SqlSession ss = FactoryService.getFatory().openSession();
        MemberVo vo =ss.selectOne("mem.selectOne", num);
        ss.close();
        return vo;
    }
    
    
}
 
 
 
cs


4.  mem.xml 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
    NUM    NUMBER
    ID    VARCHAR2(20 BYTE)
    PWD    VARCHAR2(20 BYTE)
    NAME    VARCHAR2(45 BYTE)
    POST    CHAR(10 BYTE)
    ROADADDRESS    VARCHAR2(300 BYTE)
    JIBUNADDRESS    VARCHAR2(300 BYTE)
    EDATE    DATE 
--> 
<mapper namespace="mem">
    <insert id="add" parameterType="mvo" >
        insert into mem 
        values(
        mem_seq.nextVal , #{id} , #{pwd}, #{name} ,
        #{post} , #{roadAddress} , #{jibunaddress} , 
        sysdate
        )
    </insert>
    <select id="idchk" parameterType="String" resultType="int" >
        select count(*) cnt from mem where id = #{id}
    </select>
    
    <select id="memAll" resultType="mvo">
        select * from mem order by 1 desc
    </select>
    
    
    <delete id="memDel" parameterType="int">
        delete from mem where num = #{num}
    </delete>
    
    <update id="memUp" parameterType="mvo">
        update mem set 
        ID = #{id} ,
        PWD = #{pwd} ,
        NAME =  #{name} ,
        POST = #{post} ,
        ROADADDRESS =  #{roadAddress} ,
        JIBUNADDRESS =  #{jibunaddress} 
        where num = #{num}
    </update>
    <select id="selectOne" parameterType="int" resultType="mvo">
        select * from mem where num = #{num}
    </select>
    
</mapper>
 
cs


5. MemberUpdate.class
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package service;
 
import java.io.IOException;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import dao.MemDao;
import model.ActionFoword;
import vo.MemberVo;
 
public class MemberUpdate implements Service {
 
    @Override
    public ActionFoword execute(HttpServletRequest request, 
            HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        // 파라미터로 넘어온 값을 VO 나 MAP 으로 저장한후 
        // Dao 로 넘겨야함 
        ActionFoword af = null;
        String handler = request.getParameter("handler");
        if ("form".equals(handler) ) {
            
            // System.out.println("Log 7 서비스 update" + handler);
            int num =  Integer.parseInt(request.getParameter("num"));
            MemberVo vo =MemDao.getDao().getSelectOne(num);
            request.setAttribute("vo", vo);
            af = new ActionFoword("memberUpdate.jsp"false);
            
        } else if ("update".equals(handler) ){
            // System.out.println("Log 7 서비스 update" + handler);
            MemberVo vo = new MemberVo();
            vo.setId(request.getParameter("id"));
            vo.setName(request.getParameter("name"));
            vo.setPwd(request.getParameter("pwd"));
            vo.setPost(request.getParameter("post"));
            vo.setRoadAddress(request.getParameter("roadAddress"));
            vo.setJibunaddress(request.getParameter("jibunAddress"));
            int num=Integer.parseInt(request.getParameter("num"));
            vo.setNum(num);
            
            int res =MemDao.getDao().update(vo);
            // System.out.println("LOG 8 UPDATE  확인"+ res);
            af = new ActionFoword("command?cmd=memlist"true);
        }
        
        
        return af;
    }
 
}
 
 
cs


Nav