[Day 18]公費0420—内容整理
🌞結合(join)
select bookname, price, saleprice, orderdate
from book, customer, orders
where name = '박지성' and
customer.custid = orders.custid and // customer 테이블에 있는 custid와 orders 테이블에 있는 custid와 동일해야함.
orders.bookid = book.bookid;
例)サッカー図書では、購入価格が8000ウォン以上の図書の顧客名、図書名、出版社名、購入日を印刷してください.ただし、最近の購入日で印刷し、同じ場合は顧客名で印刷します.select name, bookname, publicsher, orderdate
from customer, book, orders
where bookname like '%축구%' and price >= 8000 and
customer.custid = orders.custid and
orders.bookid = book.bookid
order by orderdate desc, name;
select name, bookname, publicsher, orderdate
from customer c, book b, orders o //짧게 사용하기 위하여 알파벳을 지정해준다.
where bookname like '%축구%' and price >= 8000 and
c.custid = o.custid and
o.bookid = b.bookid
order by orderdate desc, name;
例)注文総数、合計金額は、「メディア」で終わる出版社図書を購入した顧客名で印刷してください.しかし、総注文金額が10,000ウォン以上の製品だけが輸出される.また、受注総額が高い順に出力し、同じ場合は名称で出力するselect name, count(*), sum(saleprice)
from book b, orders o, customer c
where publicsher like '%미디어' and
b.bookid = o.bookid and
c.custid = o.custid
group by name having sum(saleprice) >= 10000
order by sum(saleprice) desc, name;
例)2022年4月3日に購入した顧客番号、氏名、住所を印刷するselect custid, name, address
from customer c, orders o
where orderdate = '2022/04/03' and
c.custid = o.custid;
<結果>SQL> select custid, name, address
2 from customer c, orders o
3 where orderdate = '2022/04/03' and
4 c.custid = o.custid;
select custid, name, address <==== name, address는 customer 테이블에만 있다.
*
1행에 오류:
ORA-00918: 열의 정의가 애매합니다
ただし、custidはcustomerテーブルにもordersテーブルにもあります.どこのcustidを印刷するか分からない!
=>>この2つのテーブルに1つのテーブル名を任意に指定します.(c.custid)
select c.custid, name, address
from customer c, orders o
where orderdate = '2022/04/03' and
c.custid = o.custid;
=>結合の場合、selectセクションで2つのテーブルのすべてのカラムを表す場合は、テーブル名を指定する必要があります.🌞部署表、従業員表
🌈部門テーブル
create table dept(
dno number primary key,
dname varchar2(20),
dloc varchar2(20)
);
🌈「従業員」テーブル
create table emp (
eno number primary key,
ename varchar2(20),
dno number references dept(dno),
salary number,
comm number,
hiredate date,
phone varchar2(20),
addr varchar2(50),
mgr number, //관리자
job varchar2(30)
);
例)ブリッジスタッフの名前、部門番号、部門名、給与、手当、実収金額を印刷してください.ただし、実際の値が高い場合は名前で出力し、同じ場合は名前で出力します.select ename, d.dno, dname, salary, comm, (salary + comm) as 실수령액
from emp e, dept d
where dloc = '판교' and
e.dno = d.dno
order by 실수령액 desc, ename;
例)開発チームで働く従業員の賃金を10%引き上げる計画です.従業員番号、部門番号、部門名、部門位置、給与、昇給幅、昇給10%の順に印刷してください.select eno, d.dno, dname, dloc, salary, (salary * 0.1) as 인상액, (salary * 1.1) as 인상액급여
from emp e, dept d
where dname like '개발%' and
e.dno = d.dno
order by ename;
例)すべての従業員の「最高賃金」と「最低賃金」の差をリストします.select (max(salary) - min(salary)) as 차이 from emp;
Reference
この問題について([Day 18]公費0420—内容整理), 我々は、より多くの情報をここで見つけました https://velog.io/@rlaehdus0417/Day-18-국비-0420-내용-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol