• 04-10-2022, 08:59:16
    #1
    Arkadaşlar merhaba giriş çıkış ile ilgili bir çıktı var, burada aşağıdaki kodlarıma göre, sadece GEç girişlerin listelenmesini istiyorum. lakin mysql'e sadece select atabilmekteyim. bu sebep ile durum kolonunu kendim php tarafında ekledim (kodlar aşağıdadır) buradan ve kodlarımdan yola çıkarak, sadece Geç girişlerin gözükeceği şekilde kodumu nasıl düzenlemeliyim ? Sorguyu da görünür bir yere aldım
    $sonuc=mysql_query($sorgu) or die("Baðlantý Sorunu: ".mysql_error());
    $tarih=date("Y-m-d");
     $deneme ="select pk.adi,pk.soyadi,pg.personel_id,pg.tarih,min(pg.giris_saat),max(pg.cikis_saat),pk.departman_kod from personel_giriscikis pg
    inner join personel_kartlari pk on pk.id=pg.personel_id
    where pg.tarih='".$tarih."' and (departman_kod='2' or departman_kod='9' or departman_kod='5') group by pg.tarih,pg.personel_id
    order by giris_saat desc";
     $denemesonuc=mysql_query($deneme) or die("Baðlantý Sorunu: ".mysql_error()
    <?php while ($row = mysql_fetch_array($denemesonuc, MYSQL_ASSOC)) {
      ?>
      <tr>
    
        <td><?= $row['adi'];?></td>
        <td><?= $row['soyadi'];?></td>
    <td>
       <?php if ($row['min(pg.giris_saat)'] > "08:15:00")
       {
    
    
           echo $row['min(pg.giris_saat)']." <td>Geç Giriş</td> ";
           } else
           {
            echo $row['min(pg.giris_saat)']." <td></td> ";
           }
        ?>
      </td>
        <td><?= $row['tarih'];?></td>
      </tr>
    <?php } ?>

  • 04-10-2022, 09:02:57
    #2
    sadece mantık yürütüyorum whereden sonra and min giriş saati büyükse istediğiniz saat yazdığınız zaman yapmış olacaksınız
    • M_Can
    M_Can bunu beğendi.
    1 kişi bunu beğendi.
  • 04-10-2022, 09:10:40
    #3
    Misafir adlı üyeden alıntı: mesajı görüntüle
    sadece mantık yürütüyorum whereden sonra and min giriş saati büyükse istediğiniz saat yazdığınız zaman yapmış olacaksınız
    Teşekkür ederim onu yaptığım zaman, giriş çıkışlarda ilk saati almıyor, sadece 8.15 den sonrasını alıyor ve herkes geç kalmış gibi gösteriyor sorguda şartı bundan ötürü veremedim
  • 04-10-2022, 09:20:50
    #4
    select pk.adi,pk.soyadi,pg.personel_id,pg.tarih,min(pg.gi ris_saat) as min_giris_saat ,max(pg.cikis_saat) as max_cikis_saat,pk.departman_kod from personel_giriscikis pg
    inner join personel_kartlari pk on pk.id=pg.personel_id
    where pg.tarih='".$tarih."' and (departman_kod='2' or departman_kod='9' or departman_kod='5') and min_giris_saat > "08:15" group by pg.tarih,pg.personel_id
  • 04-10-2022, 09:31:21
    #5
    SELECT icine CASE ile kosul koyup gec girdi, normal girdi seklinde direkt sorguda gösterebilirsiniz.

    https://www.w3schools.com/sql/sql_ref_case.asp
  • 04-10-2022, 09:47:00
    #6
    darness adlı üyeden alıntı: mesajı görüntüle
    select pk.adi,pk.soyadi,pg.personel_id,pg.tarih,min(pg.gi ris_saat) as min_giris_saat ,max(pg.cikis_saat) as max_cikis_saat,pk.departman_kod from personel_giriscikis pg
    inner join personel_kartlari pk on pk.id=pg.personel_id
    where pg.tarih='".$tarih."' and (departman_kod='2' or departman_kod='9' or departman_kod='5') and min_giris_saat > "08:15" group by pg.tarih,pg.personel_id
    hocam bunu yaptığım zaman, 8.15'in min ve max'ını alıyor. gün içinde başka giriş çıkışlar olunca, insan molaya çıkınca 9.30 da giri şvarmış gibi gözüküyor en başta.

    Bana 8.15'den sonra giriş yapanların listesi lazım. gün içinde turnikeden bi kaç kez geçiş oldu, örneğin siz 8.00 da geldiniz. geç kalmadınız.
    sonra bir molaya çıktınız 10 da, min max koşuluna göre sizin 10 da ki mola giriş çıkışınızı ilk girişmiş gibi alıyor ve geç kalmışsınız gibi gösteriyor.
    bu sebeptem ötürü sorguda işin içinden çıkamadım. php kısmında GEÇ geldi yazdırabiliyorum
  • 04-10-2022, 10:05:51
    #7
    HAVING tümcesi yardımcı olacaktır

    select pk.adi,pk.soyadi,pg.personel_id,pg.tarih,min(pg.gi ris_saat) as min_giris_saat ,max(pg.cikis_saat) as max_cikis_saat,pk.departman_kod from personel_giriscikis pg
    inner join personel_kartlari pk on pk.id=pg.personel_id
    where pg.tarih='".$tarih."' and (departman_kod='2' or departman_kod='9' or departman_kod='5') group by pg.tarih,pg.personel_id
    HAVING min(pg.giris_saat) > "08:15"

    Having durumunu and min(pg.giris_saat) < "10:00"
    Moladan önce olarak kısıtlayada bilirsiniz
  • 04-10-2022, 10:09:25
    #8
    <?php while ($row = mysql_fetch_array($denemesonuc, MYSQL_ASSOC)) {
    if ($row['min(pg.giris_saat)'] > "08:15:00"){
    ?>
    <tr>
    <td><?= $row['adi'];?></td>
    <td><?= $row['soyadi'];?></td>
    <td>
    <?php echo $row['min(pg.giris_saat)']." <td>Geç Giriş</td> "; ?>
    </td>
    <td><?= $row['tarih'];?></td>
    </tr>
    <?php }?>
  • 04-10-2022, 11:37:59
    #9
    voLwy adlı üyeden alıntı: mesajı görüntüle
    SELECT icine CASE ile kosul koyup gec girdi, normal girdi seklinde direkt sorguda gösterebilirsiniz.

    https://www.w3schools.com/sql/sql_ref_case.asp
    Hocam
    select pk.adi,pk.soyadi,pg.personel_id, pg.tarih,min(pg.giris_saat),
    CASE
    WHEN min(pg.giris_saat) > '08:15:00' THEN '1'
    END AS 'DURUM'
    from personel_giriscikis pg
    inner join personel_kartlari pk on pk.id=pg.personel_id
    where pg.tarih='".$tarih." 'and  (departman_kod='2' or departman_kod='9' or departman_kod='5')
     group by pg.tarih,pg.personel_id
    order by giris_saat desc
    buna aynı zamanda, AS ATTIĞIM 'DURUM' kısıtı koyma şansım var mı ? sayenizde güzel yol aldım, aklımdan bile geçmemişti bunu kullanmak