menggabungkan query menggunakan union di mysql _ khalifavi's weblog

7
khalifavi's weblog BASIS DATA Menggabungkan Query Menggunakan Union di MySQL SEPTEMBER 8, 2010 | KHALIFAVI | 11 KOMENTAR Prakata Mungkin kita pernah membuat model tabel yang rumit seperti ini, tabel yang bisa memiliki atribut sama namun sengaja dipisahkan, tapi pada akhirnya kita harus menjalankan 2 query terpisah untuk memanggilnya. Sebut saja kita mempunyai tabel bukutamu dengan atribut (id, alamat_ip, nama, judul, pesan, tanggal), namun pada masa penggunaan ternyata banyak yang mengirimkan pesan spam yang tidak kita inginkan, dan solusi yang terpikir pada saat itu adalah membuat tabel spam (dengan atribut yang sama dengan tabel, tapi kita menyortir terlebih dahulu

Upload: sandi1101

Post on 17-Sep-2015

221 views

Category:

Documents


0 download

DESCRIPTION

My Sql

TRANSCRIPT

  • 5/22/2015 MenggabungkanQueryMenggunakanUniondiMySQL|khalifavi'sweblog

    https://khalifavi.wordpress.com/2010/09/08/menggunakanuniondimysql/ 1/7

    khalifavi'sweblog

    BASISDATA

    MenggabungkanQueryMenggunakanUniondiMySQL

    SEPTEMBER8,2010|KHALIFAVI|11KOMENTAR

    Prakata

    Mungkinkitapernahmembuatmodeltabelyangrumitsepertiini,tabelyangbisamemilikiatributsamanamunsengajadipisahkan,tapipadaakhirnyakitaharusmenjalankan2queryterpisahuntukmemanggilnya.Sebutsajakitamempunyaitabelbukutamudenganatribut(id,alamat_ip,nama,judul,pesan,tanggal),namunpadamasapenggunaanternyatabanyakyangmengirimkanpesanspamyangtidakkitainginkan,dansolusiyangterpikirpadasaatituadalahmembuattabelspam(denganatributyangsamadengantabel,tapikitamenyortirterlebihdahulu

  • 5/22/2015 MenggabungkanQueryMenggunakanUniondiMySQL|khalifavi'sweblog

    https://khalifavi.wordpress.com/2010/09/08/menggunakanuniondimysql/ 2/7

    denganfilterantispamyangkitabuat,ataumungkinmenggunakanAkismet(http://akismet.com/)),denganmaksudagarsispambisaditinggalkansaatbackup,dantabelbukutamudalamkeadaanbebasspam.

    Disistempengelolaan(backend),kitabisamelakukanquerymasingmasingterhadapkeduatabeluntukditampilkanterpisah,tapimelihatduahalamanterpisahuntukmaksudyangsama(dalamhalinimembedakanyangmanabukutamudenganspam)bukanlahsolusiyangbagus.

    keduatabeldibuatterpisahdenganpengelolaanterpisah

    Solusi

  • 5/22/2015 MenggabungkanQueryMenggunakanUniondiMySQL|khalifavi'sweblog

    https://khalifavi.wordpress.com/2010/09/08/menggunakanuniondimysql/ 3/7

    Dalamkasussepertiinibisadilakukantigasolusi;

    1. Gabungkankeduatabelsecarafisikmenjadisatudanditambahatribut(,is_spam)sehingganantinyaqueryakandibatasidenganWHEREis_spam=0(dimanakitamemilihhanyabukanspam)

    2. GabungkankeduatabeldalamquerymenggunakanUNIONsehinggayangkitalakukanhanyasekaliquerysaja

    3. Lakukanduaqueryuntukmengambildatadarikeduatabeldanmenggabungkannyanantidipemrograman.

    Tapisesuaijudul,kitaakanmenggunakanpilihannomor2saja.

    UNIONBeraksi

    Jadi,setelahkitasepakatdenganmemilihsolusinomorduadiatas,makatinggalkitaselesaikandengansihirUNIONsaja.Meskipunsudahdibahassedikit,tapisebelumlebihjauhbiarsayajelaskantambahanmengenaiUNION.Padadasarnya,unionadalahfungsiuntukmenggabungkanduaataulebihquerySELECTdalamsatuhasilkeluaransaja.DengancatatankeduaquerySELECTtersebutharusmemilikijumlahfieldyangsama.Langsungkitacoba,strukturtabelbukutamudanspamyangsayagunakanadalahsebagaiberikut

    Begitupuladengantabelspam,tidakadayangdirubahselainnamatabelnya.Untukitu,denganqueryini

    keduaSELECTakhirnyaakanbersatudanmenambahkansatufieldis_spamyangbernilai0jika

    123456789

    CREATETABLEbukutamu(idINTPRIMARYKEYAUTO_INCREMENT,alamat_ipVARCHAR(16),namaVARCHAR(50),judulVARCHAR(50),pesanVARCHAR(250),tanggalTIMESTAMPDEFAULTCURRENT_TIMESTAMPNOTNULL)

    1234

    (SELECTid,nama,judul,pesan,tanggal,'0'asis_spamFROMbukutamu)UNION(SELECTid,nama,judul,pesan,tanggal,'1'asis_spamFROMspam)ORDERBYtanggalDESC;

  • 5/22/2015 MenggabungkanQueryMenggunakanUniondiMySQL|khalifavi'sweblog

    https://khalifavi.wordpress.com/2010/09/08/menggunakanuniondimysql/ 4/7

    keduaSELECTakhirnyaakanbersatudanmenambahkansatufieldis_spamyangbernilai0jikadatangdaritabelbukutamu,danbernilai1jikadatangdaritabelspam.SifatnormalnyaUNIONadalahselaluDISTINCT,jadijikaditemukanrecordyangsamatidakakanditampilkankeduakalinya.

    PengelolaanBukutamudanSpamdisatukan

    Kesimpulan

    JadiUNIONbergunauntukmenggabungkanbeberapaquerySELECTuntukmenghasilkansatukeluaransaja.Batasan/aturanyangdapatkitasimpulkandiantaranya

    Queryyangdisatukanharusmenghasilkanjumlahfieldyangsama.NilairecordyangsamadalamUNIONakandisatukan,dantidakakantampilduakali(samaketikakitamenggunakanDISTINCT)StatementORDERmenggunakanaliaspadasetiapSELECT,bukannamafieldsebenarnya.StatementORDER(tanpaLIMITpadasalahsatuSELECT)harusdisimpandiakhir,karenajikadisimpandidalamsalahsatuSELECTtidakakanberpengaruh.JikamenggunakanstatementLIMIT(danatauORDER),harusditentukandidalamsalahsatuSELECTatauLIMITtotal.

    Untukbatasanstandarpenggunaansayarasainicukupmemenuhi,namunjikaandamerasainimasihkurang,sayapastikaninformasilebihlengkapterdapatdiMySQLManual:UnionSyntax(http://dev.mysql.com/doc/refman/5.0/en/union.html).

  • 5/22/2015 MenggabungkanQueryMenggunakanUniondiMySQL|khalifavi'sweblog

    https://khalifavi.wordpress.com/2010/09/08/menggunakanuniondimysql/ 5/7

    KemanaLagiSetelahIni

    MySQLManual:UnionSyntax(http://dev.mysql.com/doc/refman/5.0/en/union.html)

    11thoughtsonMenggabungkanQueryMenggunakanUniondiMySQL

    1. Bramberkata:OKTOBER28,2011PADA5:46PMkerenkang,iniyangsayabutuhkan

    2. masgigiberkata:OKTOBER31,2011PADA7:48AMsayabutuhyangini,thanksya.

    3. DodiHidayatullahEMberkata:MARET19,2012PADA1:53PMhaturnuhun

    4. anangberkata:JULI25,2012PADA3:13PMkaloyangdigabungkan3tabelgmanakangcaranya

    1.khalifaviberkata:

    JULI26,2012PADA11:08PMkarenainimenggabungkanquery,bebassajatabelmanadanberapatabelyangakandi`UNION`,tapiyangperludicatatbahwajumlahfieldyangdigabungkanpadasetiapqueryharussama

    5. efberkata:MEI15,2013PADA11:17PMbang.sayamonanyasayamasihpemulasih.misaladakasus:adalakilakisukaapeladalakilakisukajeruk

    About these ads(http://wordpress.com/about-these-ads/)MYSQL UNION

  • 5/22/2015 MenggabungkanQueryMenggunakanUniondiMySQL|khalifavi'sweblog

    https://khalifavi.wordpress.com/2010/09/08/menggunakanuniondimysql/ 6/7

    adaperempuansukaapeladaperempuansukajeruksemuadalamsatutabel.

    nahbang.pertanyaansayaqueryuntukmisalnyaselectlakilakiyangsukaapelajahgimanayahbang.

    thanks

    1. TegarSetyoberkata:DESEMBER11,2013PADA1:41PMsayacobabantujawabya,mungkinyangandamaksuduntukmenampilkanisirecord?kalomemangbenarbeginisyntaxnya.selectlaki2sukaapelfromnama_tabel;

    maafkalosalahjawab,karenasayajugamasihbelajar.hhehee

    2.khalifaviberkata:

    OKTOBER29,2014PADA4:32PMMas/MbakEf,Kalaudiasumsikanpadatabeltersebutterdapatfield[id,nama,jenis_kelamin,kesukaan]*Siswa

    berartiuntuklakilakisukaapeldapatdipanggildenganquerysepertiberikutSELECT*FROMSiswaWHEREjenis_kelamin=lakilakiANDkesukaan=apel

    6. mycgbkoejieberkata:OKTOBER4,2013PADA11:06AMmaunanyagan.kalomsalx,adadata001,002,005,006.ygmaudcari003,tapikrn003tdkada,mkadiaakanmenunjuk002ygpalingdktdaridataitu,bgaimanacatanyadlmSQL?thaknxatsbantuannx

    1.khalifaviberkata:

    OKTOBER29,2014PADA4:37PMKalauinginmenampilkanrecordyangdekat(apabilatidaktersediaidyangdimaksud),bisadenganbantuansubquerysepertiini

    SELECT*FROMSiswaWHEREid=(SELECTmax(id)FROMSiswaWHEREid

  • 5/22/2015 MenggabungkanQueryMenggunakanUniondiMySQL|khalifavi'sweblog

    https://khalifavi.wordpress.com/2010/09/08/menggunakanuniondimysql/ 7/7

    Followkhalifavi'sweblog

    BuatsitusdenganWordPress.com