Sponsor

SQL Server Search Engine Using UNION And LIKE Java Code

របៀបសរសេរ Search Engine ស្វែងរកទិន្នន័យក្នុង Database 

បន្តមេរៀុនទាក់ទងទៅនឹង Merge Statement សម្រាប់ Insert និង Update នៅលើប៊ូតុង Save តែមួួយកាលពីលើកមុន ។​ ពេលនេះខ្ញុំចង់បង្ហាញអ្នក អំពីការស្វែងរកទិន្នន័យតាមលក្ខណៈ Search Engine នូវទិន្នន័យរបស់ Customer តាមរយៈ CustomerId, FullName, Address, Phone, Email ដូចខាងក្រោម :
១. បន្ថែម TextField មួយដាក់ឈ្មោះ txt_Search ដោយ​ Right Click លើ​ TextField -> Change VariableName ដើម្បីឲ្យគេ អាចវាយតូអក្សរ សែ្វងរកទិន្នន័យដែលគេស្វែងរក​ (ដូចរូប)
 ២.ដាក់​ Event លើ txt_Search TextField ដោយ Right Click ដូចរូប ហើយជ្រើសរើសយក​ Event KeyReleased


៣. សរសេរកូដ ដើម្បី​ Search រកទិន្នន័យ នៅពេលដែលគេកំពុងវាយ Key តួអក្សរ
private void txt_searchKeyReleased(java.awt.event.KeyEvent evt) {                                      
        try {
            tbl_customer.setModel(new ResultSetTableModel(DBConnection.connector(), ​​​query(txt_search.getText())));
        } catch (SQLException ex) {
            Logger.getLogger(CustomerForm.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                     
    private String query(String txtSearch){
        String sql = "Select * from tbl_Customer where CustomerID Like '%"+txtSearch+" %' ";
        sql += " Union Select * from tbl_Customer where FullName Like '%"+txtSearch+"  %' ";
        sql += " Union Select * from tbl_Customer where Address Like '%"+txtSearch+" %' ";
        sql += " Union Select * from tbl_Customer where Phone Like '%"+txtSearch+" % ' ";
        sql += " Union Select * from tbl_Customer where Email Like '%"+txtSearch+" %' ";
        return sql;
    }

 នៅក្នុង Event​ KeyReleased ខាងលើ ខ្ញុំបាន setModel ឲ្យ tbl_Customer (JTable) ដើម្បីបង្ហាញទិន្នន័យនៅពេលអ្នកវាយ Keyword ស្វែងរកទិន្នន័យ ដោយហៅ Method query(String txtSearch) ដែល return ជា String
sql =   " Select * from tbl_Customer where CustomerID Like '%"+txtSearch+"%' "  Union Select * from tbl_Customer where FullName Like ' %"+txtSearch+"%'  " Union Select * from tbl_Customer where Address Like  ' % "+txtSearch+"%' " Union Select * from tbl_Customer where Phone Like ' %"+txtSearch+"%'  " Union Select * from tbl_Customer where Email Like '%"+txtSearch+"% ' ";

ដោយក្នុងនោះ​ យើងបានសរសេរលក្ខខណ្ឌ Search តាមរយៈ CustomerID, FullName, Address, Email និង Phone ដោយប្រើ Keyword LIKE និង UNION ។ តើអ្វីជា LIKE ? អ្វីជា UNION?

១. LIKE គឺជា operator មួយ ដែលគេប្រើដើម្បី Search នូវ តួអក្សរជាក់លាក់នៅក្នុង Column នៃ Table។

ទំរង់ទូទៅ (Syntax) :

SELECT column(s) FROM TableName WHERE coumnName LIKE pattern 

- Pattern អាចជាតម្លៃ ជាតួអក្សរ(Character) ឬក៏ជាលំដាប់នៃតួអក្សរ(String)ដែលឋិតនៅក្នុង '% .......%'​​​     ។​​​​​​​​​ 

ឧទាហរណ៍ទី១៖

​​​ ​ Select * from tbl_Customer where CustomerName LIKE '%I%'

 Selection នេះ មានន័យថាអ្នកចង់ ស្វែងរកទិន្នន័យរបស់ Customer ទាំងអស់ ដែលមានឈ្មោះជា  តួអក្សរ I មិនថានៅខាងដើម កណ្តាល ឬ ចុងនៃឈ្មោះ

ឧទាហរណ៍ទី២៖

​​​ ​ Select * from tbl_Customer where CustomerName LIKE '_I%'

 Selection នេះ មានន័យថាអ្នកចង់ ស្វែងរកទិន្នន័យរបស់ Customer ទាំងអស់ ដែលមានឈ្មោះតួអក្សរ I នៅខ្ទង់ទី​ ២ នៃឈ្មោះ​។  ដែលសញ្ញា  _  គឺជាបញ្ជាក់ពី មួយតួអក្សរ​​​​​

២. UNION គឺជា Keyword មួយដែលគេប្រើ ដើម្បីលុប ទិន្នន័យនៃ row ដែលស្ទួននៅ Result set រវាង Select Statement ពីរ ឬច្រើន ។ ប៉ុន្តែ បើអ្នកចង់បង្ហាញទិន្នន័យដែលស្ទួន អ្នកអាចប្រើ UNION ALL

ទំរង់ទូទៅ (Syntax) :

SELECT column1, column2 FROM TABLE1
UNION
SELECT column1, column2 FROM TABLE2 

 នៅពេលដែលអ្នកសរសេរនូវ query ដោយប្រើ UNION អ្នកត្រូវប្រាកដថា Selection statement ត្រូវតែមានចំនួន Column និង Data type នៃ column ត្រូវតែដូចគ្នា ។ 

ឧទាហរណ៍៖

Select ProductID, ProductName from tbl_product where productId = 1 

UNION Select ProductID, ProductName from tbl_product where productId > 4;

 Selection នេះ មានន័យថាអ្នកចង់ ស្វែងរកទិន្នន័យរបស់ Product ដែលមាន Product ID មាន លេខ ១ និងធំជាង ៤​ ។

សូមទស្សនាវិដេអូខាងក្រោម ៖