본문 바로가기

PHP/DB10

[DB] DB sql문 3 Q. 회사별 첫 거래일 날짜를 구하시오. SELECT zcom.cname, min(t1) FROM( SELECT cid as s1, min(indate) as t1 FROM zpan GROUP BY s1 UNION ALL SELECT cid as s1, min(indate) as t1 FROM zmoney GROUP BY s1 ) as k LEFT JOIN zcompany as zcom on k.s1=zcom.id GROUP BY s1 ORDER BY zcom.cname; 풀이 순서 1. 매출,매입 등의 날짜기록이 있는 zpan에서 회사별 최소날짜 거래일과 입금, 출금 등의 날짜기록이 있는 zmoney에서 회사별 최소날짜 거래일 그룹화 한 뒤 유니온 시켜 한 테이블로 나타낸다. 2. 이 결과값의 최소 거.. 2023. 2. 21.
[DB]DB설계 할 때 팁 사업자번호 : 일반적으로 10자리. ‘-’가 들어가면 12자리 주민등록번호 : 13자리 ‘-’가 들어가면 14자리 바코드 : 13자리 (문자도 들어감) QR코드(2차원 바코드) : 한글로 1000자가 넘게 사용가능. 그리고 첫 번째 줄에는 바코드가 들 어있음. 두 번째 줄부터 설명이 기재되어 있음 2023. 2. 20.
[DB] DB sql문 2 거래 잔액 = 기초잔액 + 매출 -매입 - 입금 + 지급 -- Q1. tmoney(거래 잔액) 를 구하는 sql문을 적어보자 update zcompany SET tmoney=smoney + IFNULL((SELECT sum(zpan.total) FROM zpan WHERE zpan.cid=zcompany.id and zpan.type='매출'),0) - IFNULL((SELECT sum(zpan.total) FROM zpan WHERE zpan.cid=zcompany.id and zpan.type='매입'),0) - IFNULL((SELECT sum(zmoney.money) FROM zmoney WHERE zmoney.cid=zcompany.id and zmoney.type='입금'),0) + IFNUL.. 2023. 2. 17.
[DB] DB sql문 1 Q. 2023년 매출은? SELECT type, sum(total), count(*) from zpan where SUBSTR(indate,1,4)='2023' and type='매출'; 그룹화 했을 시 결과 값 : SELECT b.cname, a.type, sum(a.total) from zpan as a LEFT JOIN zcompany as b on a.cid=b.id where SUBSTR(a.indate,1,4)='2023' and a.type='매출' group by b.cname; 문자열을 자를 때는 SUBSTR 함수를 사용함. SUBSTRING, LEFT, RIGHT 함수도 문자열 자를때 사용함. 참고 사이트 https://gent.tistory.com/201 2023. 2. 17.
[DB] DB sql문 (group by, union all) Q1. 2023년 거래처별, 구분별 합계를 보여주세요(매출,매입) (컬럼명) 거래처명, 구분, 합계 select b.cname, a.type, sum(a.total) as total FROM zpan as a LEFT JOIN zcompany as b on a.cid = b.id WHERE SUBSTR(a.indate,1,4)='2023' group by a.cid, a.type order by b.cname, a.type; Q2. 2023년 거래처별, 구분별 금액합계을 보여주세요(입금,지급) (컬럼명) 거래처명, 구분, 금액합계 select b.cname, a.type, sum(a.money) as money FROM zmoney as a LEFT JOIN zcompany as b on a.cid = .. 2023. 2. 17.
[DB]SQL문 작성하기 이론 및 팁 · update, delete 써서 수정하거나 지우고자 할 때는 where 조건 절에 id를 사용한다. · INSTR 함수 = LIKE (‘%%’) 문자열에서 원하는 문자를 찾을 때 사용. ex) where c.pname like '% %' = Instr(c.pname, ‘냉장고’) · update문 쓸 때 서브쿼리 쓸 시, alias 주지 말자 · mysql에서 쿼리문을 쓸 때 문자(string)타입은 항상 큰 따옴표가 아니라 작은따옴표 ‘ ’를 적어야한다. · 컬럼을 합칠 때 컬럼명을 통일시켜야함으로 알리아스(alias)를 모든 sql문 컬럼에 전부 다 적용해야한다. 그래야 합쳐짐. · mysql문의 if 문 쓰는 방법 if (조건문, 참일 때 값, 거짓일 때 값) · min(indate) : 오래된.. 2023. 2. 15.
[DB]테이블 및 칼럼(필드) 생성 시 고려할 사항 현재는 InnoDB 가 많이 쓰인다. 과거에는 Myisam 가 많이 쓰였음 번호를 자동으로 생성하는 기능.(Oracle의 시퀀스와 같다.) '다음에 적을 번호를 나타냄' ex) 만약 ' Auto Increment Value = 2 ' 라면. 현재 1번에 DB가 들어 있다는 뜻 DB의 마지막 숫자+1 ex) 1~9까지가 비어있고, DB에 '10' 이라는 결과물이 존재한다면 Auto Increment Value가 '11'이 되어야 한다. Auto Increment 값을 수동으로 수정하는 방법 이미지나 파일 같은 것들을 DB에 저장하려고 할 때 사용하는 타입 < 필드 생성 시 숫자와 문자타입.. 2023. 2. 15.
[PHP][DB]PHP로 DB를 연결해 HTML로 쏴주는 게시판 만들기 방법1. HTML안에 PHP를 삽입하여 부분적으로 활용하는 버전 // 테이블 생성 부분 순번 테이블 제목 스킨 방법2. HTML과 PHP부분을 구분시켜 DB부분(HTML포함)만 echo로 쏴주는 방법 순번 테이블 제목 스킨 방법3. HTML부분을 전부 PHP로 사용하는 방법 2023. 2. 13.
[PHP][DB] PHP에서 select구문 작성 $sql="select bo_table, bo_subject, bo_skin from g5_board"; sql문 작성 부분 (select구문은 값을 리턴한다는걸 기억하자!) $result = mysqli_query($conn, $sql); sql을 쏴주는 부분 Select구문을 작성하고 for문또는 while문을 써서 php코드를 작성하면 i++값이 변화함에 따라 DB에서 커서가 "0"부터 시작해서 한 칸씩 내려간다.(JAVA의 DB와 같음.) 더이상 select문이 존재하지 않을 때 커서는 EOF(End Of File)로 넘어간다. 여기서 주의 할 점! for문또는 while문을 써서 테이블로 데이터를 뽑아낸뒤, 아래에 같은 sql select구문을 써서 또 다른 테이블을 생성할 시 현재 커서는 EO.. 2023. 2. 13.
[PHP][DB]PHP와 DB연결하는 코드 $conn = mysqli_connect(G5_MYSQL_HOST, G5_MYSQL_USER, G5_MYSQL_PASSWORD, G5_MYSQL_DB); if (!$conn) { die("서버와의 연결 실패! : ".mysqli_connect_error()); } else { echo "서버와의 연결 성공!"; } 여기까지가 DB와 PHP연결 시키는 부분 시작전에 잘 연결되어있는지 아닌지를 확인해 봐야한다. 커넥션($conn)은 1페이지에 1번만 사용 2023. 2. 13.