Distinct digunakan untuk membatasi agar data yang ditampilkan benar-benar unik. Isi salah satu kolom bisa sama. Tapi, jika semua kolom isinya sama, maka hanya satu saja yang akan ditampilkan.
Sintaks :
- Select distinct * From nama_tabel
- Select distinct nama_kolom From nama_tabel
- Select distinct nama_kolom1, nama_kolom2 From nama_tabel
Contoh Query :
- Select Distinct kelas From siswa
Contoh kode program :
//install librarynya kalau belum ada
#include <iostream>
#include <sqlite3.h>
char *err;
typedef char stringku[30];
int callback_data(void *notused, int jkolom, char **dataku, char **kolom){
for(int i=0;i<jkolom;i++){
printf("%s ", dataku[i]);
}
return 0;
}
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 isi_database(sqlite3 *conn){
char query[255];
static stringku data[8][3]={{"Deri", "3A", "75"}, {"Panji", "3A", "95"}, {"Romi", "3A", "80"}, {"Doni", "3B", "70"}, {"Jennie", "3B", "60"}, {"Roni", "3C", "50"}, {"Hani", "3C", "45"}, {"Mini", "3C", "40"}};
sqlite3_exec(conn, "Create Table siswa(id INTEGER Primary Key, nama Text, kelas Text, nilai INTEGER);", 0, 0, &err);
//tambahkan data
for(int i=0;i<8;i++){
sprintf(query, "INSERT INTO siswa(id, nama, kelas, nilai) VALUES('%d', '%s', '%s', '%s')", i, data[i][0], data[i][1], data[i][2]);
sqlite3_exec(conn, query, 0, 0, &err);
}
}
int main(){
int res=0;
sqlite3 *conn=NULL;
sqlite3_stmt *stmt=NULL;
sqlite3_open("databaseku.dat", &conn);
//jika database kosong, tambah tabel
sqlite3_exec(conn, "Drop Table siswa", 0, 0, &err);
isi_database(conn);
//gunakan query
printf("Kelas : \n");
sqlite3_exec(conn, "SELECT distinct kelas FROM siswa", callback_data, 0, &err);
printf("\n\nSiswa : \n");
sqlite3_exec(conn, "SELECT * FROM siswa", callback, 0, &err);
sqlite3_close(conn);
return 0;
}
Output :
Kelas : 3A 3B 3C Siswa : id : 0 nama : Deri kelas : 3A nilai : 75 id : 1 nama : Panji kelas : 3A nilai : 95 id : 2 nama : Romi kelas : 3A nilai : 80 id : 3 nama : Doni kelas : 3B nilai : 70 id : 4 nama : Jennie kelas : 3B nilai : 60 id : 5 nama : Roni kelas : 3C nilai : 50 id : 6 nama : Hani kelas : 3C nilai : 45 id : 7 nama : Mini kelas : 3C nilai : 40