• 29-10-2023, 09:30:52
    #1

    Arkadaşlar gördüğünüz gibi bir tablom var.
    TAKIPNO 200 ve 201 olan kalıplar gördüğünüz gibi üretime girmiş. Daha sonra 200 olan kalıp üretimden gelmiş ve yeniden üretime dahil edilmiş.

    Ben öyle bir sorgu çekmek istiyorum ki bana en son üretimde olan kalıpları listelesin.

    gördüğünüz gibi bu tablo güncelleme ile değil sürekli girdi çıktı veriler ile doluyor. o yüzden basitte üretimde olanları listele diyince hepsini gösteriyor. ben takipno göre hareketin son hali üretim olanı getirmek istiyorum.

    SELECT
                                TBLHAREKET.HAREKETID,
                                TBLHAREKETDURUM.HAREKET,
                                COALESCE(TBLMODELLER.MODEL, 'Bilinmiyor') AS MODEL,
                                TBLDISKALIP.TAKIPNO,
                                TBLDISKALIP.MODEL AS DISHADDE,
                                TBLHAREKET.HEREDATE,
                                TBLHAREKET.KG,
                                TBLHAREKET.ACK
                            FROM
                                TBLDISKALIP
                                LEFT JOIN TBLHAREKETDURUM ON TBLDISKALIP.DURUMID = TBLHAREKETDURUM.HSID
                                LEFT JOIN TBLHAREKET ON TBLDISKALIP.TAKIPNO = TBLHAREKET.TAKIPNO
                                LEFT JOIN TBLMODELLER ON TBLHAREKET.MODELID = TBLMODELLER.MODELID
                                LEFT JOIN TBLTYPELIST ON TBLDISKALIP.TYPEID = TBLTYPELIST.TYPEID
                            WHERE
                                TBLDISKALIP.DURUMID IN (4, 5, 6) -- DURUMID 4, 5 veya 6 olan kayıtları al
                                AND TBLHAREKET.HAREKETID > (
                                    SELECT MAX(H1.HAREKETID)
                                    FROM TBLHAREKET AS H1
                                    WHERE H1.TAKIPNO = TBLDISKALIP.TAKIPNO
                                      AND H1.STATUS_ = 1 
                                )
                            ORDER BY
                                TBLHAREKET.HAREKETID DESC;
                            ;
    şöyle bir sorgum var fakat bu getirmiyor. siz baştan yazmak isteseniz nasıl yazardınız ?
  • 29-10-2023, 09:51:22
    #2
    select
    TAKIPNO
    from TBLHAREKET
    where HAREKETID in (select max(HAREKETID) from TBLHAREKET group by TAKIPNO)
      and ACK = 'Üretimde.';
  • 29-10-2023, 10:28:24
    #3
    SELECT * FROM TBLHAREKET WHERE (SELECT ACK FROM TBLHAREKET WHERE ACK = "Üretimde." ORDER BY HEREDATE DESC LIMIT 1) = "Üretimde." GROUP BY TAKIPNO;
    Anladığım kadarıyla TAKIPNO alanın birden fazla kez bu tabloda kullanılıyor o yüzden TAKIPNO alanına göre ACK si en son "Üretimde. " olan verileri çekmek istiyosun. Bu sorgunun işini göreceğini düşünüyorum. Diğer tablolar ile joinlersen diğer tablolardaki alanlara da ulaşabilirsin.
  • 29-10-2023, 12:14:26
    #4
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    select
    TAKIPNO
    from TBLHAREKET
    where HAREKETID in (select max(HAREKETID) from TBLHAREKET group by TAKIPNO)
      and ACK = 'Üretimde.';
    oguzdmr adlı üyeden alıntı: mesajı görüntüle
    SELECT * FROM TBLHAREKET WHERE (SELECT ACK FROM TBLHAREKET WHERE ACK = "Üretimde." ORDER BY HEREDATE DESC LIMIT 1) = "Üretimde." GROUP BY TAKIPNO;
    Anladığım kadarıyla TAKIPNO alanın birden fazla kez bu tabloda kullanılıyor o yüzden TAKIPNO alanına göre ACK si en son "Üretimde. " olan verileri çekmek istiyosun. Bu sorgunun işini göreceğini düşünüyorum. Diğer tablolar ile joinlersen diğer tablolardaki alanlara da ulaşabilirsin.
    birşey daha sormak istiyorum aşşağıda ki tablom var yan ic kalıpları takip eden ic kalıplar birden cok stoğa sahip olabiliyor.


    Ben mesela birine üretimden döndü diye işaretlediğimde örnek ICMOVEID 3 olanı baz alalım aşşağıya yeni hareket ekliyor

    ICHADDDEID = 1 STOK=1 DATE1= Günün Tarihi DURUMID= 1 yapıyor cünkü geri geldi diyor.

    Sonra ben bunları tekrar geri sorgulayıp sıralamak istiyorum. fakat bana üretimde olanlar gerekiyor.
    Bir önceki kaydı güncelleme yapmadığım için verileri hep alt alta kaydettiriyorum o yüzden sorgulamamda hep üretimde kileri gösteriyor. Herşey denedim gözden kaçan birşey mi var?

    SELECT
                        TBLICMOVE.ICMOVEID,
                        TBLICKALIP.ICKALIPID,
                        TBLICKALIP.MODEL AS ICHADDE,
                        TBLICMOVE.STOK,
                        TBLICMOVE.DATE1,
                        TBLHAREKETDURUM.HAREKET,
                        TBLICMOVE.ACK,
                        TBLMODELLER.MODEL AS MODEL
                    FROM TBLICMOVE
                    LEFT JOIN TBLMODELLER ON TBLMODELLER.MODELID = TBLICMOVE.MODELID
                    LEFT JOIN TBLICKALIP ON TBLICKALIP.ICKALIPID = TBLICMOVE.ICHADDEID
                    LEFT JOIN TBLHAREKETDURUM ON TBLHAREKETDURUM.HSID = TBLICMOVE.DURUMID
                    WHERE ICMOVEID IN (SELECT MAX(ICMOVEID) FROM TBLICMOVE GROUP BY TBLICMOVE.DURUMID,ICHADDEID)
                      AND ACK = 'Üretimde.'
                    ORDER BY ICMOVEID DESC;