Join digunakan untuk menggabungkan isi beberapa tabel berdasarkan kesamaan isi kolomnya. Sintaksnya bisa kalian lihat di bawah ini.
- Select nama_kolom1, nama_kolom2, ... From nama_tabel_utama join nama_tabel_lain on kondisi
- Select nama_kolom1, nama_kolom2, ... From nama_tabel_1 join nama_tabel2 on kondisi join nama_tabel3 on kondisi
Contoh Query :
- SELECT penjualan.id, obat.nama, obat.harga, penjualan.kuantitas, (obat.harga*penjualan.kuantitas) AS total FROM penjualan JOIN obat ON obat.id=penjualan.obat
Jika ada kolom yang namanya sama, kita perlu menambahkan nama tabel sebelum nama kolomnya yang dipisahkan dengan titik. Misalnya, jika tabel obat dan penjualan sama-sama punya kolom bernama id, maka kita harus menulis obat.id dan penjualan.id untuk membedakan kedua kolom tersebut.
//install librarynya kalau belum ada
#include <iostream>
#include <sqlite3.h>
char *err;
typedef char stringku[30];
int callback(void *notused, int jkolom, char **dataku, char **kolom){
for(int i=0;i<jkolom;i++)printf("%s = %s\n", kolom[i], dataku[i]);
printf("\n");
return 0;
}
void database_penjualan(sqlite3 *conn){
char query[255];
static stringku data[5][2]={{"1", "3"}, {"2", "4"}, {"1", "5"}, {"0", "6"}, {"0", "4"}};
sqlite3_exec(conn, "Create Table penjualan(id INTEGER Primary Key, obat INTEGER, kuantitas INTEGER);", 0, 0, &err);
//tambahkan data
for(int i=0;i<5;i++){
sprintf(query, "INSERT INTO penjualan(id, obat, kuantitas) VALUES('%d','%s', '%s')", i, data[i][0], data[i][1]);
sqlite3_exec(conn, query, 0, 0, &err);
}
}
void database_obat(sqlite3 *conn){
char query[255];
static stringku data[3][2]={{"Parasetamol", "7000"}, {"Dexametason", "10000"}, {"Antasida", "20000"}};
sqlite3_exec(conn, "Create Table obat(id INTEGER Primary Key, nama Text, harga INTEGER);", 0, 0, &err);
//tambahkan data
for(int i=0;i<5;i++){
sprintf(query, "INSERT INTO obat(id, nama, harga) VALUES('%d','%s', '%s')", i, data[i][0], data[i][1]);
sqlite3_exec(conn, query, 0, 0, &err);
}
}
int main(){
int res=0;
char query[255]="SELECT penjualan.id, obat.nama, obat.harga, penjualan.kuantitas, (obat.harga*penjualan.kuantitas) AS total FROM penjualan join obat on obat.id=penjualan.obat";
sqlite3 *conn=NULL;
sqlite3_stmt *stmt=NULL;
sqlite3_open("databaseku.dat", &conn);
//jika database kosong, tambah tabel
if(conn){
database_obat(conn);
database_penjualan(conn);
}
//gunakan query
sqlite3_exec(conn, query, callback, 0, &err);
sqlite3_close(conn);
return 0;
}
Output
id = 0 nama = Dexametason harga = 10000 kuantitas = 3 total = 30000 id = 1 nama = Antasida harga = 20000 kuantitas = 4 total = 80000 id = 2 nama = Dexametason harga = 10000 kuantitas = 5 total = 50000 id = 3 nama = Parasetamol harga = 7000 kuantitas = 6 total = 42000 id = 4 nama = Parasetamol harga = 7000 kuantitas = 4 total = 28000
Contoh di atas menggabungkan informasi dari tabel obat ke dalam tabel penjualan. Tabel penjualan berperan sebagai tabel utama yang ditampilkan informasinya sehingga ada 5 data yang ditampilkan. Hasilnya akan berbeda jika tabel utamanya ditukar.