Wednesday, September 11, 2013

.::: How To Using Aljabar(Algebra): union(gabungan), intersection(irisan), distinct (proyeksi), join/inner join/normal join/equal join(=),left outer join and right outer join In SQL :::.

Algebra (from Arabic al-jebr meaning "reunion of broken parts") is the branch of mathematics concerning the study of the rules of operations and relations, and the constructions and concepts arising from them, including terms, polynomials, equations and algebraic structures. Together with geometry, analysis, topology, combinatorics, and number theory, algebra is one of the main branches of pure mathematics. Algebra has numerous usages in daily life and is commonly taught in public schools.

Elementary algebra, often part of the curriculum in secondary education, introduces the concept of variables representing numbers. Statements based on these variables are manipulated using the rules of operations that apply to numbers, such as addition. This can be done for a variety of reasons, including equation solving. Algebra is much broader than elementary algebra and studies what happens when different rules of operations are used and when operations are devised for things other than numbers. Addition and multiplication can be generalized and their precise definitions lead to structures such as groups, rings and fields, studied in the area of mathematics called abstract algebra.

The Greek mathematician Diophantus has traditionally been known as the "father of algebra", but in more recent times there is much debate over whether Muhammad ibn Musa al-Khwarizmi deserves that title instead.

You can download The Study Case & solution Lab Oracle & SQL Expert 


=== 7. aljabar relasional ===
== 7.1 union (gabungan) ==
union bertujuan menggabungkan dua query atau lebih menjadi satu kesatuan query dengan syarat query/subquery yang akan digabung harus memiliki domain kolom yang sama
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT         field 1,...,field n,[agregate function]
FROM         table
 [WHERE]     [criteria]
 [GROUP BY] [field 1,...,field n]

UNION

SELECT         field 1,...,field n,[agregate function]
FROM         table
 [WHERE]     [kriteria]
 [GROUP BY] [field 1,...,field n]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SQL> select * from pasok;

KODE_PASOK KODE_B KODE_ TANGGAL_P JUMLAH_PASOK KETERANGAN
---------- ------ ----- --------- ------------ ---------------
PAS-E001   ELK-01 EJ-01 01-JAN-02            8
PAS-E002   ELK-01 EJ-02 01-JAN-02            5
PAS-E003   ELK-02 EJ-01 01-FEB-02            2
PAS-E004   ELK-02 EJ-02 02-FEB-02            3
PAS-E005   ELK-02 EB-02 01-JAN-02            2
PAS-E006   ELK-03 EJ-01 03-MAR-02            5
PAS-E007   ELK-03 EJ-01 04-MAR-02            2
PAS-E008   ELK-03 EJ-01 03-MAR-02            3
PAS-E009   ELK-03 EB-01 13-MAR-02            4
PAS-E010   ELK-03 EB-01 13-MAR-02            3
PAS-E011   ELK-04 EB-01 22-APR-02           12
PAS-E012   ELK-04 EB-02 30-APR-02            9

12 rows selected.

SQL>

= query 1 ==
SQL> select KODE_SUPLIER, count(JUMLAH_PASOK) as CACAH_PASOK, sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-01' group by KODE_SUPLIER;

KODE_ CACAH_PASOK TOTAL_PASOK
----- ----------- -----------
EJ-01           5          20

SQL>

= query 2 =
SQL> select KODE_SUPLIER,count(JUMLAH_PASOK) as CACAH_PASOK, sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-02' group by KODE_SUPLIER;

KODE_ CACAH_PASOK TOTAL_PASOK
----- ----------- -----------
EJ-02           2           8

SQL>

= query 3 =
SQL> select KODE_SUPLIER,count(JUMLAH_PASOK) as CACAH_PASOK, sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER in('EB-01','EB-02') group by KODE_SUPLIER;

KODE_ CACAH_PASOK TOTAL_PASOK
----- ----------- -----------
EB-02           2          11
EB-01           3          19

SQL>


SQL> select KODE_SUPLIER,count(JUMLAH_PASOK) as CACAH_PASOK, sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER in('EJ-01','EJ-02') group by KODE_SUPLIER;

KODE_ CACAH_PASOK TOTAL_PASOK
----- ----------- -----------
EJ-02           2           8
EJ-01           5          20

SQL>

= query 1 & query 2 =

SQL> select KODE_SUPLIER, count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-01' group by KODE_SUPLIER UNIONselect KODE_SUPLIER, count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-02' group by KODE_SUPLIER;

KODE_ CACAH_PASOK TOTAL_PASOK
----- ----------- -----------
EJ-01           5          20
EJ-02           2           8

SQL>
SQL> select KODE_SUPLIER, count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-01' group by KODE_SUPLIER union select KODE_SUPLIER, count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-02' group by KODE_SUPLIER;

KODE_ CACAH_PASOK TOTAL_PASOK
----- ----------- -----------
EJ-01           5          20
EJ-02           2           8

SQL>
SQL> select KODE_SUPLIER, count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-01' group by KODE_SUPLIER UNIONselect KODE_SUPLIER, count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER='EJ-02' group by KODE_SUPLIER UNION select KODE_SUPLIER,count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok where KODE_SUPLIER in('EB-01','EB-02') group by KODE_SUPLIER;

KODE_ CACAH_PASOK TOTAL_PASOK
----- ----------- -----------
EB-01           3          19
EB-02           2          11
EJ-01           5          20
EJ-02           2           8

SQL>

== 7.2 intersection (irisan) ==
irisan bertujuan mencari isisan diantara query yang ada dengan syarat adanya kesamaan domain pada kolom kolom yang ada
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT         field 1,...,field n,[agregate function]
FROM         table
 [WHERE]     [criteria]
 [GROUP BY] [field 1,...,field n]

INTERSECT

SELECT         field 1,...,field n,[agregate function]
FROM         table
 [WHERE]     [kriteria]
 [GROUP BY] [field 1,...,field n]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

SQL> select * from pasok;

KODE_PASOK KODE_B KODE_ TANGGAL_P JUMLAH_PASOK KETERANGAN
---------- ------ ----- --------- ------------ ---------------
PAS-E001   ELK-01 EJ-01 01-JAN-02            8
PAS-E002   ELK-01 EJ-02 01-JAN-02            5
PAS-E003   ELK-02 EJ-01 01-FEB-02            2
PAS-E004   ELK-02 EJ-02 02-FEB-02            3
PAS-E005   ELK-02 EB-02 01-JAN-02            2
PAS-E006   ELK-03 EJ-01 03-MAR-02            5
PAS-E007   ELK-03 EJ-01 04-MAR-02            2
PAS-E008   ELK-03 EJ-01 03-MAR-02            3
PAS-E009   ELK-03 EB-01 13-MAR-02            4
PAS-E010   ELK-03 EB-01 13-MAR-02            3
PAS-E011   ELK-04 EB-01 22-APR-02           12
PAS-E012   ELK-04 EB-02 30-APR-02            9

12 rows selected.

SQL>
= query 1 =
SQL> select * from pasok where JUMLAH_PASOK >=4;

KODE_PASOK KODE_B KODE_ TANGGAL_P JUMLAH_PASOK KETERANGAN
---------- ------ ----- --------- ------------ ---------------
PAS-E001   ELK-01 EJ-01 01-JAN-02            8
PAS-E002   ELK-01 EJ-02 01-JAN-02            5
PAS-E006   ELK-03 EJ-01 03-MAR-02            5
PAS-E009   ELK-03 EB-01 13-MAR-02            4
PAS-E011   ELK-04 EB-01 22-APR-02           12
PAS-E012   ELK-04 EB-02 30-APR-02            9

6 rows selected.

SQL>

= query 2 =

SQL> select * from pasok where JUMLAH_PASOK <=8;

KODE_PASOK KODE_B KODE_ TANGGAL_P JUMLAH_PASOK KETERANGAN
---------- ------ ----- --------- ------------ ---------------
PAS-E001   ELK-01 EJ-01 01-JAN-02            8
PAS-E002   ELK-01 EJ-02 01-JAN-02            5
PAS-E003   ELK-02 EJ-01 01-FEB-02            2
PAS-E004   ELK-02 EJ-02 02-FEB-02            3
PAS-E005   ELK-02 EB-02 01-JAN-02            2
PAS-E006   ELK-03 EJ-01 03-MAR-02            5
PAS-E007   ELK-03 EJ-01 04-MAR-02            2
PAS-E008   ELK-03 EJ-01 03-MAR-02            3
PAS-E009   ELK-03 EB-01 13-MAR-02            4
PAS-E010   ELK-03 EB-01 13-MAR-02            3

10 rows selected.

SQL>

= query 1 & query 2 =
SQL> select * from pasok where JUMLAH_PASOK >=4 INTERSECT select * from pasok where JUMLAH_PASOK <=8;

KODE_PASOK KODE_B KODE_ TANGGAL_P JUMLAH_PASOK KETERANGAN
---------- ------ ----- --------- ------------ ---------------
PAS-E001   ELK-01 EJ-01 01-JAN-02            8
PAS-E002   ELK-01 EJ-02 01-JAN-02            5
PAS-E006   ELK-03 EJ-01 03-MAR-02            5
PAS-E009   ELK-03 EB-01 13-MAR-02            4

= query 1 =
SQL>
SQL> select KODE_BARANG,count(JUMLAH_PEMBELIAN) from pembelian group by KODE_BARANG;

KODE_B COUNT(JUMLAH_PEMBELIAN)
------ -----------------------
ELK-02                       4
ELK-04                       2
ELK-01                       5
ELK-03                       4

= query 1=
SQL> select KODE_BARANG,count(JUMLAH_PASOK) from pasok group by KODE_BARANG;

KODE_B COUNT(JUMLAH_PASOK)
------ -------------------
ELK-02                   3
ELK-04                   2
ELK-01                   2
ELK-03                   5

SQL>
= query 1 & query 2 =
SQL> select KODE_BARANG,count(JUMLAH_PEMBELIAN) from pembelian group by KODE_BARANG INTERSECT select KODE_BARANG,count(JUMLAH_PASOK) from pasok group by KODE_BARANG;

KODE_B COUNT(JUMLAH_PEMBELIAN)
------ -----------------------
ELK-04                       2

SQL>

== 7.3 difference (minus) ==
minus bertujuan untuk menampilkan data hasil pengurangan dari dua query atau sub query dengan syarat mempunyai domain yang sama
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT         field 1,...,field n,[agregate function]
FROM         table
 [WHERE]     [criteria]
 [GROUP BY] [field 1,...,field n]

MINUS | DIFFERENCE

SELECT         field 1,...,field n,[agregate function]
FROM         table
 [WHERE]     [kriteria]
 [GROUP BY] [field 1,...,field n]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SQL> select * from pasok;

KODE_PASOK KODE_B KODE_ TANGGAL_P JUMLAH_PASOK KETERANGAN
---------- ------ ----- --------- ------------ ---------------
PAS-E001   ELK-01 EJ-01 01-JAN-02            8
PAS-E002   ELK-01 EJ-02 01-JAN-02            5
PAS-E003   ELK-02 EJ-01 01-FEB-02            2
PAS-E004   ELK-02 EJ-02 02-FEB-02            3
PAS-E005   ELK-02 EB-02 01-JAN-02            2
PAS-E006   ELK-03 EJ-01 03-MAR-02            5
PAS-E007   ELK-03 EJ-01 04-MAR-02            2
PAS-E008   ELK-03 EJ-01 03-MAR-02            3
PAS-E009   ELK-03 EB-01 13-MAR-02            4
PAS-E010   ELK-03 EB-01 13-MAR-02            3
PAS-E011   ELK-04 EB-01 22-APR-02           12
PAS-E012   ELK-04 EB-02 30-APR-02            9

12 rows selected.

SQL>
= query 1 =
SQL> select KODE_BARANG,count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok group by KODE_BARANG;

KODE_B CACAH_PASOK TOTAL_PASOK
------ ----------- -----------
ELK-02           3           7
ELK-04           2          21
ELK-01           2          13
ELK-03           5          17

= query 2 =
SQL> select KODE_BARANG,count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok having sum(JUMLAH_PASOK)>15 group by KODE_BARANG;

KODE_B CACAH_PASOK TOTAL_PASOK
------ ----------- -----------
ELK-04           2          21
ELK-03           5          17

SQL>

= query 1 & query 2 =
SQL> select KODE_BARANG,count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok group by KODE_BARANG MINUS select KODE_BARANG,count(JUMLAH_PASOK) as CACAH_PASOK,sum(JUMLAH_PASOK) as TOTAL_PASOK from pasok having sum(JUMLAH_PASOK)>15 group by KODE_BARANG;

KODE_B CACAH_PASOK TOTAL_PASOK
------ ----------- -----------
ELK-01           2          13
ELK-02           3           7

SQL>

= 7.4 proyeksi/distinct =
distinct digunakan untuk menghilangkan nilai ganda
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT         field 1,...,field n,[agregate function]
FROM         table
 [WHERE]     [criteria]
 [GROUP BY] [field 1,...,name_field n]

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SQL> select KODE_BARANG,TANGGAL_PEMBELIAN,JUMLAH_PEMBELIAN from pembelian;

KODE_B TANGGAL_P JUMLAH_PEMBELIAN
------ --------- ----------------
ELK-01 20-MAY-02                3
ELK-01 21-MAY-02                4
ELK-01 20-MAY-02                2
ELK-01 20-MAY-02                2
ELK-01 22-MAY-02                3
ELK-02 24-JUN-02                1
ELK-02 24-JUN-02                1
ELK-02 25-JUN-02                2
ELK-02 25-JUN-02                2
ELK-03 20-JUN-02                5
ELK-03 02-JUL-02                4
ELK-03 04-JUL-02                6
ELK-03 10-JUL-02                5
ELK-04 15-JUL-02               12
ELK-04 17-JUL-02               15

15 rows selected.

SQL>
SQL> select DISTINCT KODE_BARANG,TANGGAL_PEMBELIAN,JUMLAH_PEMBELIAN from pembelian;

KODE_B TANGGAL_P JUMLAH_PEMBELIAN
------ --------- ----------------
ELK-01 22-MAY-02                3
ELK-03 20-JUN-02                5
ELK-04 17-JUL-02               15
ELK-02 25-JUN-02                2
ELK-03 02-JUL-02                4
ELK-03 04-JUL-02                6
ELK-01 20-MAY-02                3
ELK-01 20-MAY-02                2
ELK-02 24-JUN-02                1
ELK-03 10-JUL-02                5
ELK-01 21-MAY-02                4
ELK-04 15-JUL-02               12

12 rows selected.

SQL>

== 7.5 join/inner join/normal join/equal join(=) ==
bertujuan untuk mencari kesamaan data antara table yang satu dengan table yang lain
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT     table-1.field-1,...,table-1.field-n,
        table-2.field-1,...,table-2.field-n,
        table-n.field-1,...,table-n.field-n,
FROM     table-1,...,table-n
WHERE     table-1.field_PK = table-2.field_PK AND
        table-2.field_PK = table-n.field_PK
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SQL> select barang.NAMA_BARANG,pasok.TANGGAL_PASOK,pasok.JUMLAH_PASOK from barang,pasok where barang.KODE_BARANG=pasok.KODE_BARANG;

NAMA_BARANG               TANGGAL_P JUMLAH_PASOK
------------------------- --------- ------------
RICE COOKER               01-JAN-02            8
RICE COOKER               01-JAN-02            5
LEMARI ES                 01-FEB-02            2
LEMARI ES                 02-FEB-02            3
LEMARI ES                 01-JAN-02            2
TELEVISI                  03-MAR-02            5
TELEVISI                  13-MAR-02            3
TELEVISI                  04-MAR-02            2
TELEVISI                  03-MAR-02            3
TELEVISI                  13-MAR-02            4
RADIO/TAPE                22-APR-02           12
RADIO/TAPE                30-APR-02            9

12 rows selected.

SQL>
SQL> select barang.NAMA_BARANG,pasok.TANGGAL_PASOK,pasok.JUMLAH_PASOK from barang join pasok on barang.KODE_BARANG=pasok.KODE_BARANG;

NAMA_BARANG               TANGGAL_P JUMLAH_PASOK
------------------------- --------- ------------
RICE COOKER               01-JAN-02            8
RICE COOKER               01-JAN-02            5
LEMARI ES                 01-FEB-02            2
LEMARI ES                 02-FEB-02            3
LEMARI ES                 01-JAN-02            2
TELEVISI                  03-MAR-02            5
TELEVISI                  13-MAR-02            3
TELEVISI                  04-MAR-02            2
TELEVISI                  03-MAR-02            3
TELEVISI                  13-MAR-02            4
RADIO/TAPE                22-APR-02           12
RADIO/TAPE                30-APR-02            9

12 rows selected.

SQL>
SQL> select b.NAMA_BARANG,p.TANGGAL_PASOK,p.JUMLAH_PASOK from barang b join pasok p on b.KODE_BARANG=p.KODE_BARANG;

NAMA_BARANG               TANGGAL_P JUMLAH_PASOK
------------------------- --------- ------------
RICE COOKER               01-JAN-02            8
RICE COOKER               01-JAN-02            5
LEMARI ES                 01-FEB-02            2
LEMARI ES                 02-FEB-02            3
LEMARI ES                 01-JAN-02            2
TELEVISI                  03-MAR-02            5
TELEVISI                  13-MAR-02            3
TELEVISI                  04-MAR-02            2
TELEVISI                  03-MAR-02            3
TELEVISI                  13-MAR-02            4
RADIO/TAPE                22-APR-02           12
RADIO/TAPE                30-APR-02            9

12 rows selected.

SQL>
SQL> select suplier.NAMA_SUPLIER,pasok.TANGGAL_PASOK,pasok.JUMLAH_PASOK from sup
lier,pasok where suplier.KODE_SUPLIER=pasok.KODE_SUPLIER;

NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------------ --------- ------------
PT ULTRASOUND                  13-MAR-02            4
PT ULTRASOUND                  13-MAR-02            3
PT ULTRASOUND                  22-APR-02           12
PT SUPERTRON                   30-APR-02            9
PT SUPERTRON                   01-JAN-02            2
PT ACTRON                      03-MAR-02            3
PT ACTRON                      04-MAR-02            2
PT ACTRON                      01-FEB-02            2
PT ACTRON                      01-JAN-02            8
PT ACTRON                      03-MAR-02            5
PT MULYA ELEKTRONIK            01-JAN-02            5

NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------------ --------- ------------
PT MULYA ELEKTRONIK            02-FEB-02            3

12 rows selected.

SQL> select suplier.NAMA_SUPLIER,pasok.TANGGAL_PASOK,pasok.JUMLAH_PASOK from suplier join pasok on suplier.KODE_SUPLIER=pasok.KODE_SUPLIER;

NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------------ --------- ------------
PT ULTRASOUND                  13-MAR-02            4
PT ULTRASOUND                  13-MAR-02            3
PT ULTRASOUND                  22-APR-02           12
PT SUPERTRON                   30-APR-02            9
PT SUPERTRON                   01-JAN-02            2
PT ACTRON                      03-MAR-02            3
PT ACTRON                      04-MAR-02            2
PT ACTRON                      01-FEB-02            2
PT ACTRON                      01-JAN-02            8
PT ACTRON                      03-MAR-02            5
PT MULYA ELEKTRONIK            01-JAN-02            5
PT MULYA ELEKTRONIK            02-FEB-02            3

12 rows selected.

SQL>
SQL> select s.NAMA_SUPLIER,p.TANGGAL_PASOK,p.JUMLAH_PASOK from suplier s,pasok p where s.KODE_SUPLIER=p.KODE_SUPLIER;

NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------------ --------- ------------
PT ULTRASOUND                  13-MAR-02            4
PT ULTRASOUND                  13-MAR-02            3
PT ULTRASOUND                  22-APR-02           12
PT SUPERTRON                   30-APR-02            9
PT SUPERTRON                   01-JAN-02            2
PT ACTRON                      03-MAR-02            3
PT ACTRON                      04-MAR-02            2
PT ACTRON                      01-FEB-02            2
PT ACTRON                      01-JAN-02            8
PT ACTRON                      03-MAR-02            5
PT MULYA ELEKTRONIK            01-JAN-02            5
PT MULYA ELEKTRONIK            02-FEB-02            3

12 rows selected.

SQL> select s.NAMA_SUPLIER,p.TANGGAL_PASOK,p.JUMLAH_PASOK from suplier s join pasok p on s.KODE_SUPLIER=p.KODE_SUPLIER;

NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------------ --------- ------------
PT ULTRASOUND                  13-MAR-02            4
PT ULTRASOUND                  13-MAR-02            3
PT ULTRASOUND                  22-APR-02           12
PT SUPERTRON                   30-APR-02            9
PT SUPERTRON                   01-JAN-02            2
PT ACTRON                      03-MAR-02            3
PT ACTRON                      04-MAR-02            2
PT ACTRON                      01-FEB-02            2
PT ACTRON                      01-JAN-02            8
PT ACTRON                      03-MAR-02            5
PT MULYA ELEKTRONIK            01-JAN-02            5
PT MULYA ELEKTRONIK            02-FEB-02            3

12 rows selected.

SQL>
SQL> select barang.NAMA_BARANG,suplier.NAMA_SUPLIER,pasok.TANGGAL_PASOK,pasok.JUMLAH_PASOK from barang,suplier,pasok where barang.KODE_BARANG=pasok.KODE_BARANG and suplier.KODE_SUPLIER=pasok.KODE_SUPLIER;

NAMA_BARANG               NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------- ------------------------------ --------- ------------
TELEVISI                  PT ACTRON                      03-MAR-02            3
TELEVISI                  PT ACTRON                      04-MAR-02            2
TELEVISI                  PT ACTRON                      03-MAR-02            5
LEMARI ES                 PT ACTRON                      01-FEB-02            2
RICE COOKER               PT ACTRON                      01-JAN-02            8
LEMARI ES                 PT MULYA ELEKTRONIK            02-FEB-02            3
RICE COOKER               PT MULYA ELEKTRONIK            01-JAN-02            5
RADIO/TAPE                PT ULTRASOUND                  22-APR-02           12
TELEVISI                  PT ULTRASOUND                  13-MAR-02            4
TELEVISI                  PT ULTRASOUND                  13-MAR-02            3
RADIO/TAPE                PT SUPERTRON                   30-APR-02            9
LEMARI ES                 PT SUPERTRON                   01-JAN-02            2

12 rows selected.

SQL> select barang.NAMA_BARANG,suplier.NAMA_SUPLIER,pasok.TANGGAL_PASOK,pasok.JUMLAH_PASOK from barang join pasok on barang.KODE_BARANG=pasok.KODE_BARANG join suplier on  suplier.KODE_SUPLIER=pasok.KODE_SUPLIER;

NAMA_BARANG               NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------- ------------------------------ --------- ------------
TELEVISI                  PT ACTRON                      03-MAR-02            3
TELEVISI                  PT ACTRON                      04-MAR-02            2
TELEVISI                  PT ACTRON                      03-MAR-02            5
LEMARI ES                 PT ACTRON                      01-FEB-02            2
RICE COOKER               PT ACTRON                      01-JAN-02            8
LEMARI ES                 PT MULYA ELEKTRONIK            02-FEB-02            3
RICE COOKER               PT MULYA ELEKTRONIK            01-JAN-02            5
RADIO/TAPE                PT ULTRASOUND                  22-APR-02           12
TELEVISI                  PT ULTRASOUND                  13-MAR-02            4
TELEVISI                  PT ULTRASOUND                  13-MAR-02            3
RADIO/TAPE                PT SUPERTRON                   30-APR-02            9
LEMARI ES                 PT SUPERTRON                   01-JAN-02            2

12 rows selected.

SQL>
SQL> select b.NAMA_BARANG,s.NAMA_SUPLIER,p.TANGGAL_PASOK,p.JUMLAH_PASOK from barang b,suplier s,pasok p where b.KODE_BARANG=p.KODE_BARANG and s.KODE_SUPLIER=p.KODE_SUPLIER;

NAMA_BARANG               NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------- ------------------------------ --------- ------------
TELEVISI                  PT ACTRON                      03-MAR-02            3
TELEVISI                  PT ACTRON                      04-MAR-02            2
TELEVISI                  PT ACTRON                      03-MAR-02            5
LEMARI ES                 PT ACTRON                      01-FEB-02            2
RICE COOKER               PT ACTRON                      01-JAN-02            8
LEMARI ES                 PT MULYA ELEKTRONIK            02-FEB-02            3
RICE COOKER               PT MULYA ELEKTRONIK            01-JAN-02            5
RADIO/TAPE                PT ULTRASOUND                  22-APR-02           12
TELEVISI                  PT ULTRASOUND                  13-MAR-02            4
TELEVISI                  PT ULTRASOUND                  13-MAR-02            3
RADIO/TAPE                PT SUPERTRON                   30-APR-02            9
LEMARI ES                 PT SUPERTRON                   01-JAN-02            2

12 rows selected.

SQL> select b.NAMA_BARANG,s.NAMA_SUPLIER,p.TANGGAL_PASOK,p.JUMLAH_PASOK from barang b join pasok p on b.KODE_BARANG=p.KODE_BARANG join suplier s on s.KODE_SUPLIER=p.KODE_SUPLIER;

NAMA_BARANG               NAMA_SUPLIER                   TANGGAL_P JUMLAH_PASOK
------------------------- ------------------------------ --------- ------------
TELEVISI                  PT ACTRON                      03-MAR-02            3
TELEVISI                  PT ACTRON                      04-MAR-02            2
TELEVISI                  PT ACTRON                      03-MAR-02            5
LEMARI ES                 PT ACTRON                      01-FEB-02            2
RICE COOKER               PT ACTRON                      01-JAN-02            8
LEMARI ES                 PT MULYA ELEKTRONIK            02-FEB-02            3
RICE COOKER               PT MULYA ELEKTRONIK            01-JAN-02            5
RADIO/TAPE                PT ULTRASOUND                  22-APR-02           12
TELEVISI                  PT ULTRASOUND                  13-MAR-02            4
TELEVISI                  PT ULTRASOUND                  13-MAR-02            3
RADIO/TAPE                PT SUPERTRON                   30-APR-02            9
LEMARI ES                 PT SUPERTRON                   01-JAN-02            2

12 rows selected.

SQL>

=== 7.6 outer join(left outer join and right outer join) ===
Sintak SQL left outer join Oracle 8i dan sebelumnya
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT     A.field-1,...,A.field-n,
        B.field-1,...,B.field-n,
FROM     table-1 A,table-2 B
WHERE     A.field_PK = B.field_PK (+)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sintak SQL right outer join Oracle 8i dan sebelumnya
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT     A.field-1,...,A.field-n,
        B.field-1,...,B.field-n,
FROM     table-1 A,table-2 B
WHERE     A.field_PK (+)= B.field_PK
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sintak SQL left outer join Oracle 9i dan sesudahnya
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT     A.field-1,...,A.field-n,
        B.field-1,...,B.field-n,
FROM     table-1 A left outer join table-2 B
ON      A.field_PK = B.field_PK
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sintak SQL right outer join Oracle 9i dan sesudahnya
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT     A.field-1,...,A.field-n,
        B.field-1,...,B.field-n,
FROM     table-1 A right outer join table-2 B
ON      A.field_PK = B.field_PK
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

== 7.6.1 left outer join ==
SQL> -- LEFT=tabel barang;
SQL> select * from barang;

KODE_B NAMA_BARANG               SATUAN_BARANG        STOK_BARANG KETERANGAN
------ ------------------------- -------------------- ----------- ---------------
ELK-01 RICE COOKER               BUAH                          20
ELK-02 LEMARI ES                 UNIT                           8
ELK-03 TELEVISI                  UNIT                          30
ELK-04 RADIO/TAPE                BUAH                          35

SQL> -- RIGHT=tabel pasok;
SQL> select * from pasok;

KODE_PASOK KODE_B KODE_ TANGGAL_P JUMLAH_PASOK KETERANGAN
---------- ------ ----- --------- ------------ ---------------
PAS-E001   ELK-01 EJ-01 01-JAN-02            8
PAS-E002   ELK-01 EJ-02 01-JAN-02            5
PAS-E003   ELK-02 EJ-01 01-FEB-02            2
PAS-E004   ELK-02 EJ-02 02-FEB-02            3
PAS-E005   ELK-02 EB-02 01-JAN-02            2
PAS-E006   ELK-03 EJ-01 03-MAR-02            5
PAS-E007   ELK-03 EJ-01 04-MAR-02            2
PAS-E008   ELK-03 EJ-01 03-MAR-02            3
PAS-E009   ELK-03 EB-01 13-MAR-02            4
PAS-E010   ELK-03 EB-01 13-MAR-02            3
PAS-E011   ELK-04 EB-01 22-APR-02           12
PAS-E012   ELK-04 EB-02 30-APR-02            9

12 rows selected.

SQL>
SQL> select barang.KODE_BARANG as KD_BRG,barang.NAMA_BARANG,pasok.TANGGAL_PASOKas TGL_PASOK,pasok.JUMLAH_PASOK from barang,pasok where barang.KODE_BARANG=pasok.KODE_BARANG(+);

KD_BRG NAMA_BARANG               TGL_PASOK JUMLAH_PASOK
------ ------------------------- --------- ------------
ELK-01 RICE COOKER               01-JAN-02            8
ELK-01 RICE COOKER               01-JAN-02            5
ELK-02 LEMARI ES                 01-FEB-02            2
ELK-02 LEMARI ES                 02-FEB-02            3
ELK-02 LEMARI ES                 01-JAN-02            2
ELK-03 TELEVISI                  03-MAR-02            5
ELK-03 TELEVISI                  13-MAR-02            3
ELK-03 TELEVISI                  04-MAR-02            2
ELK-03 TELEVISI                  03-MAR-02            3
ELK-03 TELEVISI                  13-MAR-02            4
ELK-04 RADIO/TAPE                22-APR-02           12
ELK-04 RADIO/TAPE                30-APR-02            9

12 rows selected.

SQL> select barang.KODE_BARANG as KD_BRG,barang.NAMA_BARANG,pasok.TANGGAL_PASOKas TGL_PASOK,pasok.JUMLAH_PASOK from barang left outer join pasok on barang.KODE_BARANG=pasok.KODE_BARANG;

KD_BRG NAMA_BARANG               TGL_PASOK JUMLAH_PASOK
------ ------------------------- --------- ------------
ELK-01 RICE COOKER               01-JAN-02            8
ELK-01 RICE COOKER               01-JAN-02            5
ELK-02 LEMARI ES                 01-FEB-02            2
ELK-02 LEMARI ES                 02-FEB-02            3
ELK-02 LEMARI ES                 01-JAN-02            2
ELK-03 TELEVISI                  03-MAR-02            5
ELK-03 TELEVISI                  13-MAR-02            3
ELK-03 TELEVISI                  04-MAR-02            2
ELK-03 TELEVISI                  03-MAR-02            3
ELK-03 TELEVISI                  13-MAR-02            4
ELK-04 RADIO/TAPE                22-APR-02           12
ELK-04 RADIO/TAPE                30-APR-02            9

12 rows selected.

SQL>
SQL> select b.KODE_BARANG as KD_BRG,b.NAMA_BARANG,p.TANGGAL_PASOK as TGL_PASOK,p.JUMLAH_PASOK from barang b,pasok p where b.KODE_BARANG=p.KODE_BARANG(+);

KD_BRG NAMA_BARANG               TGL_PASOK JUMLAH_PASOK
------ ------------------------- --------- ------------
ELK-01 RICE COOKER               01-JAN-02            8
ELK-01 RICE COOKER               01-JAN-02            5
ELK-02 LEMARI ES                 01-FEB-02            2
ELK-02 LEMARI ES                 02-FEB-02            3
ELK-02 LEMARI ES                 01-JAN-02            2
ELK-03 TELEVISI                  03-MAR-02            5
ELK-03 TELEVISI                  13-MAR-02            3
ELK-03 TELEVISI                  04-MAR-02            2
ELK-03 TELEVISI                  03-MAR-02            3
ELK-03 TELEVISI                  13-MAR-02            4
ELK-04 RADIO/TAPE                22-APR-02           12
ELK-04 RADIO/TAPE                30-APR-02            9

12 rows selected.

SQL>
SQL> select b.KODE_BARANG as KD_BRG,b.NAMA_BARANG,p.TANGGAL_PASOK as TGL_PASOK,p.JUMLAH_PASOK from barang b left outer join pasok p on b.KODE_BARANG=p.KODE_BARANG;

KD_BRG NAMA_BARANG               TGL_PASOK JUMLAH_PASOK
------ ------------------------- --------- ------------
ELK-01 RICE COOKER               01-JAN-02            8
ELK-01 RICE COOKER               01-JAN-02            5
ELK-02 LEMARI ES                 01-FEB-02            2
ELK-02 LEMARI ES                 02-FEB-02            3
ELK-02 LEMARI ES                 01-JAN-02            2
ELK-03 TELEVISI                  03-MAR-02            5
ELK-03 TELEVISI                  13-MAR-02            3
ELK-03 TELEVISI                  04-MAR-02            2
ELK-03 TELEVISI                  03-MAR-02            3
ELK-03 TELEVISI                  13-MAR-02            4
ELK-04 RADIO/TAPE                22-APR-02           12
ELK-04 RADIO/TAPE                30-APR-02            9

12 rows selected.

SQL>

== 7.6.2 right outer join ==
SQL> -- LEFT=tabel pembelian
SQL> select * from pembelian;

KODE_PEMBE KODE_B KODE_C TANGGAL_P JUMLAH_PEMBELIAN KETERANGAN
---------- ------ ------ --------- ---------------- ---------------
BEL-E001   ELK-01 J-0001 20-MAY-02                3
BEL-E002   ELK-01 J-0001 21-MAY-02                4
BEL-E003   ELK-01 J-0002 20-MAY-02                2
BEL-E004   ELK-01 B-0001 20-MAY-02                2
BEL-E005   ELK-01 B-0002 22-MAY-02                3
BEL-E006   ELK-02 J-0001 24-JUN-02                1
BEL-E007   ELK-02 J-0002 24-JUN-02                1
BEL-E008   ELK-02 B-0001 25-JUN-02                2
BEL-E009   ELK-02 B-0002 25-JUN-02                2
BEL-E010   ELK-03 J-0001 20-JUN-02                5
BEL-E011   ELK-03 J-0002 02-JUL-02                4
BEL-E012   ELK-03 B-0001 04-JUL-02                6
BEL-E013   ELK-03 J-0001 10-JUL-02                5
BEL-E014   ELK-04 J-0002 15-JUL-02               12
BEL-E015   ELK-04 B-0002 17-JUL-02               15

15 rows selected.

SQL> -- RIGHT=tabel barang
SQL> select * from barang;

KODE_B NAMA_BARANG               SATUAN_BARANG        STOK_BARANG KETERANGAN
------ ------------------------- -------------------- ----------- ---------------
ELK-01 RICE COOKER               BUAH                          20
ELK-02 LEMARI ES                 UNIT                           8
ELK-03 TELEVISI                  UNIT                          30
ELK-04 RADIO/TAPE                BUAH                          35

SQL>
SQL> select pembelian.TANGGAL_PEMBELIAN as TGL_BELI,pembelian.JUMLAH_PEMBELIAN as JML_BELI,barang.KODE_BARANG as KD_BRG,barang.NAMA_BARANG from pembelian,barang  where pembelian.KODE_BARANG(+)=barang.KODE_BARANG;

TGL_BELI    JML_BELI KD_BRG NAMA_BARANG
--------- ---------- ------ -------------------------
21-MAY-02          4 ELK-01 RICE COOKER
20-MAY-02          3 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
22-MAY-02          3 ELK-01 RICE COOKER
24-JUN-02          1 ELK-02 LEMARI ES
24-JUN-02          1 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
20-JUN-02          5 ELK-03 TELEVISI
02-JUL-02          4 ELK-03 TELEVISI
04-JUL-02          6 ELK-03 TELEVISI
10-JUL-02          5 ELK-03 TELEVISI
15-JUL-02         12 ELK-04 RADIO/TAPE
17-JUL-02         15 ELK-04 RADIO/TAPE

15 rows selected.

SQL> select pembelian.TANGGAL_PEMBELIAN as TGL_BELI,pembelian.JUMLAH_PEMBELIAN as JML_BELI,barang.KODE_BARANG as KD_BRG,barang.NAMA_BARANG from pembelian right outer join barang on pembelian.KODE_BARANG(+)=barang.KODE_BARANG;

TGL_BELI    JML_BELI KD_BRG NAMA_BARANG
--------- ---------- ------ -------------------------
21-MAY-02          4 ELK-01 RICE COOKER
20-MAY-02          3 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
22-MAY-02          3 ELK-01 RICE COOKER
24-JUN-02          1 ELK-02 LEMARI ES
24-JUN-02          1 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
20-JUN-02          5 ELK-03 TELEVISI
02-JUL-02          4 ELK-03 TELEVISI
04-JUL-02          6 ELK-03 TELEVISI
10-JUL-02          5 ELK-03 TELEVISI
15-JUL-02         12 ELK-04 RADIO/TAPE
17-JUL-02         15 ELK-04 RADIO/TAPE

15 rows selected.

SQL>
SQL> select pembelian.TANGGAL_PEMBELIAN as TGL_BELI,pembelian.JUMLAH_PEMBELIAN as JML_BELI,barang.KODE_BARANG as KD_BRG,barang.NAMA_BARANG from pembelian right outer join barang on pembelian.KODE_BARANG=barang.KODE_BARANG;

TGL_BELI    JML_BELI KD_BRG NAMA_BARANG
--------- ---------- ------ -------------------------
21-MAY-02          4 ELK-01 RICE COOKER
20-MAY-02          3 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
22-MAY-02          3 ELK-01 RICE COOKER
24-JUN-02          1 ELK-02 LEMARI ES
24-JUN-02          1 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
20-JUN-02          5 ELK-03 TELEVISI
02-JUL-02          4 ELK-03 TELEVISI
04-JUL-02          6 ELK-03 TELEVISI
10-JUL-02          5 ELK-03 TELEVISI
15-JUL-02         12 ELK-04 RADIO/TAPE
17-JUL-02         15 ELK-04 RADIO/TAPE

15 rows selected.

SQL>
SQL> select pb.TANGGAL_PEMBELIAN as TGL_BELI,pb.JUMLAH_PEMBELIAN as JML_BELI,b.K
ODE_BARANG as KD_BRG,b.NAMA_BARANG from pembelian pb,barang b where pb.KODE_BARA
NG(+)=b.KODE_BARANG;

TGL_BELI    JML_BELI KD_BRG NAMA_BARANG
--------- ---------- ------ -------------------------
21-MAY-02          4 ELK-01 RICE COOKER
20-MAY-02          3 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
22-MAY-02          3 ELK-01 RICE COOKER
24-JUN-02          1 ELK-02 LEMARI ES
24-JUN-02          1 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
20-JUN-02          5 ELK-03 TELEVISI
02-JUL-02          4 ELK-03 TELEVISI

TGL_BELI    JML_BELI KD_BRG NAMA_BARANG
--------- ---------- ------ -------------------------
04-JUL-02          6 ELK-03 TELEVISI
10-JUL-02          5 ELK-03 TELEVISI
15-JUL-02         12 ELK-04 RADIO/TAPE
17-JUL-02         15 ELK-04 RADIO/TAPE

15 rows selected.

SQL> select pb.TANGGAL_PEMBELIAN as TGL_BELI,pb.JUMLAH_PEMBELIAN as JML_BELI,b.KODE_BARANG as KD_BRG,b.NAMA_BARANG from pembelian pb right outer join barang b on pb.KODE_BARANG=b.KODE_BARANG;

TGL_BELI    JML_BELI KD_BRG NAMA_BARANG
--------- ---------- ------ -------------------------
21-MAY-02          4 ELK-01 RICE COOKER
20-MAY-02          3 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
20-MAY-02          2 ELK-01 RICE COOKER
22-MAY-02          3 ELK-01 RICE COOKER
24-JUN-02          1 ELK-02 LEMARI ES
24-JUN-02          1 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
25-JUN-02          2 ELK-02 LEMARI ES
20-JUN-02          5 ELK-03 TELEVISI
02-JUL-02          4 ELK-03 TELEVISI
04-JUL-02          6 ELK-03 TELEVISI
10-JUL-02          5 ELK-03 TELEVISI
15-JUL-02         12 ELK-04 RADIO/TAPE
17-JUL-02         15 ELK-04 RADIO/TAPE

15 rows selected.

SQL>

Referensi
- Menguasai Oracle, SQL & PL/SQL karya Imam Heryanto, Budi Raharjo, Penerbit Informatika Bandung
- blog http://fakta-dan-unik.blogspot.com
- http://fakta-dan-unik.blogspot.com/search/label/SQL
- http://teguhth.blogspot.com/search/label/SQL%20Expert

No comments:

Post a Comment

Popular Posts