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

[tanya] FIlter field atau column pada 1 tabel

[IMG]http://i39.tinypic.com/2jb3620.jpg[/IMG] ;
image
diatas adalah gambar dari table SQL saya....

pertanyaan saya, bagaimana carax agar query SQL bisa menampilkan data/record yang tidak bernilai NOL (0), pada kolom n1-n23
jadi data bisa di liat per kode_training....??
jadi misal pada kode_training = 30-03-01 untuk filed/kolom yang tampil hanya n1-n4, jadi untuk kolom/field yg bernilai NOL (0) tidak ikut ditampilkan....
pad kode_training = 50-06-01 kolom yang tidampilkan hanya n1-n2...
begitu sterusnya untuk kode_training yg lain...
ini nanti saya gabungkan dengan script pada delphi...


mohon bantuan mas2 n mbak2 sekalian....
terima kasih....

Tanggapan

  • di IF saja di koding aplikasi nya

    kagak ada cara lain yg efektif & efisien, biarpun dipindah ke sql
  • pakek logika IF gmana mas maksudnya...?

  • edited May 2013
    if (variabel<>0) then begin
      //tampilkan isi
    end;

    delphi kan ?

    kalo query, jelas gak mungkin ...
    jumlah field yg muncul pasti sesuai dengan jumlah field yg ada di SELECT

    kalo cuma sekedar angka nol kagak nungul, masih bisa
    tapi kolom field tetep ada
  • edited May 2013
    iya mas pakek delphi...
    ok mas,,,, 

  • mass boo, minta bantuan lagi donkk... untuk querynya, saya buat prosecedure terlebih dahulu mas, dan alhamdulilah field yang muncul juga dah sesuai harapan, jika dijalankan lewat query MySQL.... tapi untuk manggilnya dengan delphi masih bingung mas....

    bisa minta bantuanya mas...?
  • kalo jalanin sp sih, kalo pake zeos, tinggal menjalankan query : "CALL nama_sp;"
  • edited May 2013
    saya pakek ini mas::
    [code]
    procedure TForm7.DBGrid1CellClick(Column: TColumn);
    begin
      if CheckBox1.checked then
        Q2.Close;
        Q2.SQL.Clear;
        Q2.sql.text:='call proc_no_zero(kodetraining);';
        Q2.Execute;
        Q2.Open;
    end;

    [/code]

    tapi stelah klik salah satu record pada DBGrid ada eror:

    Unknown colum KodeTraining in field list

    itu kmungkinan karna KodeTraining pada procedure tidak menunjuk lgsg pada kodetraining yg dtunjuk oleh user..

    kalo saya ubah jadi::
    Q2.SQL.text:='CALL proc_no_zero('+Q1.fieldbyname('KodeTraining').AsString+')';

    masih tetep eror juga, untuk pemanggilan kodetraining-x yg sesuai dgn yg di klik user pada DBgrid gmana ya mas yg tepat...?

    misal saya melakukan query dbawah ini pada Mysql, data dapat tampil dgn baik..
    call proc_no_zero('30-03-01')

    field yg muncul juga sesuai harapan....
  • edited May 2013
    Q2.SQL.text:='CALL proc_no_zero("'+Q1.fieldbyname('KodeTraining').AsString+'")';

    kalo tanpa quote, hasil concat nya : call proc_no_zero(30-03-01)
    pasti salah ...

  • ini masih error mas saat klik data pad dbgridcellclick... brikut erronya

    #42000 you have an error in your SQL syntax; check the 
    manual that corresponds to your mysql server version for the
    right to use near 'from 2011_nilai where kode_training='12''
    at line 1.
  • itu baris perintah yg mana ?
  • edited May 2013
    spertinya itu di procedure MySQL mas....
    DROP PROCEDURE IF EXISTS `proc_no_zero`;
    DELIMITER //
    CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_no_zero`(IN `kode` VARCHAR(50))
    BEGIN
    SET @sql =
    CONCAT(
     "SELECT NoPeserta,Nama,Kode_training,",
     (SELECT CONCAT_WS(',',
      IF(c0>0,'n1',NULL), IF(c1>0,'n2',NULL), IF(c2>0,'n3',NULL), IF(c3>0,'n4',NULL),
    IF(c4>0,'n5',NULL), IF(c5>0,'n6',NULL), IF(c6>0,'n7',NULL), IF(c7>0,'n8',NULL),
    IF(c8>0,'n9',NULL), IF(c9>0,'n10',NULL), IF(c10>0,'n11',NULL), IF(c11>0,'n12',NULL),
    IF(c12>0,'n13',NULL), IF(c13>0,'n14',NULL), IF(c14>0,'n15',NULL), IF(c15>0,'n16',NULL),
    IF(c16>0,'n17',NULL), IF(c17>0,'n18',NULL), IF(c18>0,'n19',NULL), IF(c19>0,'n20',NULL),
    IF(c20>0,'n21',NULL), IF(c21>0,'n22',NULL), IF(c22>0,'n23',NULL))

      FROM ( SELECT
      SUM(IF(IFNULL(n1,0)=0,0,1)) AS c0, SUM(IF(IFNULL(n2,0)=0,0,1)) AS c1,
      SUM(IF(IFNULL(n3,0)=0,0,1)) AS c2, SUM(IF(IFNULL(n4,0)=0,0,1)) AS c3,
    SUM(IF(IFNULL(n5,0)=0,0,1)) AS c4, SUM(IF(IFNULL(n6,0)=0,0,1)) AS c5,
    SUM(IF(IFNULL(n7,0)=0,0,1)) AS c6, SUM(IF(IFNULL(n8,0)=0,0,1)) AS c7,
    SUM(IF(IFNULL(n9,0)=0,0,1)) AS c8, SUM(IF(IFNULL(n10,0)=0,0,1)) AS c9,
    SUM(IF(IFNULL(n11,0)=0,0,1)) AS c10, SUM(IF(IFNULL(n12,0)=0,0,1)) AS c11,
    SUM(IF(IFNULL(n13,0)=0,0,1)) AS c12, SUM(IF(IFNULL(n14,0)=0,0,1)) AS c13,
    SUM(IF(IFNULL(n14,0)=0,0,1)) AS c14, SUM(IF(IFNULL(n15,0)=0,0,1)) AS c15,
    SUM(IF(IFNULL(n15,0)=0,0,1)) AS c16, SUM(IF(IFNULL(n16,0)=0,0,1)) AS c17,
    SUM(IF(IFNULL(n17,0)=0,0,1)) AS c18, SUM(IF(IFNULL(n18,0)=0,0,1)) AS c19,
    SUM(IF(IFNULL(n19,0)=0,0,1)) AS c20, SUM(IF(IFNULL(n20,0)=0,0,1)) AS c21,
    SUM(IF(IFNULL(n21,0)=0,0,1)) AS c22, SUM(IF(IFNULL(n22,0)=0,0,1)) AS c23

              FROM 2011_nilai WHERE Kode_training=kode
           ) bebaslah), " FROM 2011_nilai WHERE Kode_training='",kode,"'"
    );
    PREPARE stmt FROM @sql;
      EXECUTE stmt;
      DROP PREPARE stmt;
    END//
    DELIMITER ;
  • edited May 2013
    perintah call nya kaya apa ?
    parameternya apa ?
  • ini mas 
    Q2.SQL.text:='CALL proc_no_zero("'+Q1.fieldbyname('KodeTraining').AsString+'")';
  • coba di ShowMessage() dolo Q2.SQL.text nya .... query strimg yg terbentukk spt apa ?
  • showmessage-x bener mas.... q klik pada DBGrid yg mengandung kode_training '16-02-01 '

    call_proc_no_zero("16-02-01") ---->>>> hasil showmessage-x

  • semua bermasalah atau hanya input parameter tertentu ?

    kalo baca pesan error nya : where kode_training='12'

    yg masuk cuma angka 12, ekornya hilang
  • edited May 2013
    ow ... kaya nya gw tau sumber masalahnya ...

    error cuma nungul dimana field yg elo concat_ws() seluruhnya berisi NULL

    otomatis, query yg terbentuk jadi :
    SELECT NoPeserta,Nama,Kode_training, FROM 2011_nilai WHERE Kode_training='...'

    koma itu yg bikin syntax jadi kagak valid ...
  • udah aku benerin tapi masih error, untuk kode_training juga dah bisa masuk dlm procedure n query

    berikut error-x mas::

    #42000 you have an error in your SQL syntax; check the 
    manual that corresponds to your mysql server version for the
    right to use near 'from 2011_nilai where kode_training='
    16-02-01 ''
    at line 1.



    ternyata yg error itu hanya di beberapa kode_training aja mas,, untuk kodetraining yang ada dibawahx tidak masalah samasekali, alias DBGrid mampu menampilkan field sesuai harapan.....

    apa kmungkinan database-x sendiri ya mas?
  • itu pan sudah gw sebut kemungkinan asal masalah elo ...
  • iya maaf karna kurang jeli.....
    hehehe
Sign In or Register to comment.