Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

SQL select two table

image

Mas kura2/user lainnya, saya punya 2 tabel yang yg saya border merah berelasi:
1) gambar sebelah kiri kategori (tabel a)
2) gambar sebelah kanan isi dari tiap kategori (tabel b)

Biasanya saya select 2x untuk mendapatkan hasilnya, select tabel a baru select tabel b. hasilnya spt dbawah ini:
Badung Regency:
  - Sangeh
  - Pelaga Village
  - Kuta Beach
  - Nusa Dua
  - DST
Bangli Regency
  - Penglipuran Village
  - Mount Batur
  - Trunyan Village
Buleleng Regency
  - Gitgit waterfal
  - Lovina

Saya pingin sekali query coba pake sql join hasilnya gak mau spt diatas jadi kategori diulang -ulang sejumlah data di tabel b. perlu ditambah kondisi apa ya biar kategori_reg hasilnya spt contoh di atas???

Hasil dari query join kayak dibawah:
Badung Regency
  - Sangeh
Badung Regency
  - Pelaga Village
Badung Regency
  - Kuta Beach

Tanggapan

  • edited January 2014
    :D

    script yg pake query JOIN mana ?



    ini aja dah elo pelajari sendiri :

    <?php
    $data = array(
      array('A','a'),
      array('A','b'),
      array('A','c'),
      array('A','d'),
      array('A','e'),
      array('A','f'),
      array('B','g'),
      array('B','h'),
      array('B','i'),
      array('B','j'),
      array('C','k'),
      array('C','l'),
      array('C','m'),
      array('C','n'),
      array('C','o'),
      array('C','p'),
    );

    $i=0;
    $cat='';
    $no_all=1;
    $no_per_cat=1;

    echo '<table border=1 cellpadding=1 cellspacing=1>';
    while($data[$i]) {
      if($cat!==$data[$i][0]) {
        $cat=$data[$i][0];
        echo
        '<tr>'.
          '<td></td>'.
          '<td colspan=2> Kategori '.$cat.' </td>'.
        '</tr>';
        $no_per_cat=1;
      }
      echo
      '<tr>'.
        '<td width=30> '.$no_all.'. </td>'.
        '<td width=30> '.$no_per_cat.'. </td>'.
        '<td width=100> '.$data[$i][1].' </td>'.
      '</tr>';
      $no_all++;
      $no_per_cat++;
      $i++;
    }
    echo '</table>';
    ?>




    untung nya kalo pake model kaya begini, pake query JOIN, bisa di LIMIT, jadi gampang kalo dibikin model paging
  • Koq nyengir mas Kura2.. hemmm

    Ni lagi coba pake GROUP_CONCAT(); mas
  • edited January 2014
    kagak perlu pake GROUP_CONCAT() ...
    pelajari aja script di atas

    itu sudah gw miripin banget dgn cara baca data dari database
    gw loop juga pake while, bukan for atau foreach
    kagak ada loop di dalam loop



    gimana gw kagak nyengir :D
    lha elo nanya, script kagak elo posting
    gimana gw bisa liat alur yg elo pake ?
  • wakak..sori mas kura2..
    Dengan GROUP_CONCAT hasilnya bisa seh mas kura2 spt di atas..
    $sql_cat="SELECT a.id_o,a.id,a.ob_name,b.id,b.kategori_reg,
    GROUP_CONCAT(ob_name SEPARATOR '
    ') as subpost
    FROM tbl_tourism a LEFT JOIN tbl_area b
    ON a.id=b.id
    GROUP BY a.id_o";



    Aq coba dulu buat spt contoh dari mas kura2 diatas..
  • edited January 2014
    kalo elo pake GROUP_CONCAT() ...
    tetep bakal ada loop di dalam loop
    dan bakal tetep kesulitan kalo mainan paging

    coba dah elo pikirkan saja masalah ini ...
    anggap data elo adalah data :
    propinsi, kota / kabupaten, kecamatan, kelurahan :D
    sama kan, tree juga ? ada "kategori" dan "isi kategori" nya

    "bagaimana gw bisa bikin tampilan list seluruh propinsi, kota / kabupaten, kecamatan, kelurahan dalam bentuk berjenjang, dan tiap tampilan halaman hanya berisi 50 kelurahan, lalu lanjut ke halaman berikut ?"

    :D

    sumpe deh ...
    pake loop query di dalam loop query model elo awal pasti jadi ruwet
    pake GROUP_CONCAT juga sama ruwet nya
    + hasil GROUP_CONCAT() nya bakal panjang ampun-ampunan :D

    sementara kalo pake JOIN, cukup pake LIMIT seperti paging biasa
  • edited January 2014
    Cool mas kura2... saya cobain contohnya mas kura2 bisa.. :)
    BTW $cat='';
    kalo echo $cat di dalam while hasilnya kok bisa sama spt data di tabel kategori mas kura2.. ?? -> if($cat!==$resul_2['kategori_reg']) {

    }

    Kalo pake GROUP_CONCAT emang susah kalo mo buat urutan tree mas kura2.. :

  • lha pan di bawahnya ada :
    $cat = ...

    itu gunanya buat assign value utk deteksi kalo ada perubahan di "kategori" berikutnya

    echo nya sih terserah,
    mau echo $cat nya
    atau echo $resul_2['kategori_reg']
    sama saja
Sign In or Register to comment.