• 18-07-2022, 18:00:38
    #1
    Merhaba,

    Sql ile select çekip ürünleri sıralıyorum ama bazı ürünler dopingli olduğu için önceliği onlara vermek istiyorum ama dopin tablomda sıralama var örnek 1 bekliyor 2 onaylı 3 bitti.

    Buna Göre Sorgumda sadece ilk başa 2 olanları getirip sonrasında diğer ürünleri sıralamalıyım.

    Aşağıdaki Kodda ORDER BY id.durum DESC dediğimde bekleyenler ve bitenlerde sıraya giriyor ben sadece onaylı yani 2 olanlar gelsin sonrasında ise NULL olanlar gelsin istiyorum.

    SELECT * from urun u LEFT JOIN urun_doping id on i.urid=id.iID where i.urun_durumu=1 ORDER BY id.durum DESC LIMIT 18
  • 18-07-2022, 18:11:54
    #2
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Sql ile select çekip ürünleri sıralıyorum ama bazı ürünler dopingli olduğu için önceliği onlara vermek istiyorum ama dopin tablomda sıralama var örnek 1 bekliyor 2 onaylı 3 bitti.

    Buna Göre Sorgumda sadece ilk başa 2 olanları getirip sonrasında diğer ürünleri sıralamalıyım.

    Aşağıdaki Kodda ORDER BY id.durum DESC dediğimde bekleyenler ve bitenlerde sıraya giriyor ben sadece onaylı yani 2 olanlar gelsin sonrasında ise NULL olanlar gelsin istiyorum.

    SELECT * from urun u LEFT JOIN urun_doping id on i.urid=id.iID where i.urun_durumu=1 ORDER BY id.durum DESC LIMIT 18


    Hocam case when order yapabilirsin örnek kod bırakacağım ama çalışıp çalışmadığından emin değilim. sadece örnek:



    SELECT * from
    urun u
    LEFT JOIN urun_doping id ON
    i.urid=id.iID
    WHERE i.urun_durumu=1
    ORDER BY
    (
        CASE
            WHEN id.durum = 1 THEN 3
            WHEN id.durum = 2 THEN 1
            WHEN id.durum = 3 THEN 2
    ) ASC
    DESC LIMIT 18
  • 18-07-2022, 18:18:42
    #3
    Bu Değerleri değiştirmek için değilmi ben sıralarken işlem yapmak istiyorum.

    Örnek Benim Sorgumda Sıralama şu şekilde oluyor.

    ORDER BY id.durum DESC Düşündüğümde

    Öncelik 2 sonra 1 sonra 0 ve NULL olanlar geliyor.

    Ben Öncelik 2 ve Sonrası NULL olanlar gelsin istiyorum.



    gurkanatik adlı üyeden alıntı: mesajı görüntüle
    Hocam case when order yapabilirsin örnek kod bırakacağım ama çalışıp çalışmadığından emin değilim. sadece örnek:

    SELECT * from
    urun u
    LEFT JOIN urun_doping id ON
    i.urid=id.iID
    WHERE i.urun_durumu=1
    ORDER BY
    (
        CASE
            WHEN id.durum = 1 THEN 3
            WHEN id.durum = 2 THEN 1
            WHEN id.durum = 3 THEN 2
    ) ASC
    DESC LIMIT 18
  • 18-07-2022, 18:25:20
    #4
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Bu Değerleri değiştirmek için değilmi ben sıralarken işlem yapmak istiyorum.

    Örnek Benim Sorgumda Sıralama şu şekilde oluyor.

    ORDER BY id.durum DESC Düşündüğümde

    Öncelik 2 sonra 1 sonra 0 ve NULL olanlar geliyor.

    Ben Öncelik 2 ve Sonrası NULL olanlar gelsin istiyorum.

    evet değerleri değiştirmek için fakat ordering mantığı gelen değere göre sıralıyor.
    yani değerler değiştikten sonra sıralama yapacaktır. buna benzer bir sıralama yapmıştım daha önce çalışacağını düşünüyorum denemenizi tavsiye ederim.
  • 18-07-2022, 18:28:10
    #5
    Sorunumu Where koşulu ile sağladım.

    İhtiyacı olanlar için
    SELECT * from urun u LEFT JOIN urun_doping id on i.urid=id.iID where i.urun_durumu=1 and (id.durum=2 or id.durum IS NULL) ORDER BY id.durum DESC LIMIT 18