• 12-06-2020, 11:39:52
    #1
    iki tablomu left join ile eşleştiriyorum grupluyorum ve order ile sıralıyorum ama istediğimi bir türlü alamadım yardımcı olurmusunuz ?
    Aşağıda resimde Tablolarım mevcut.
  • 12-06-2020, 11:44:33
    #2
    Cevap tarihi ve soru tarihi degerlerine göre sıralama yaptırabilirsin hocam örnek olarak yazıyorum


    Örnek;

    select * from sorular.soru_id inner join cevaplar.soru_idon ORDER*BY*cevap_tarihi DESC
  • 12-06-2020, 12:52:26
    #3
    O Şekilde olmaz hocam birden fazla bir soruya cevap veriliyor soru id gruplayıp yapmak lazım ama bunun yanında son cvp almak lazım.

    alperaltun adlı üyeden alıntı: mesajı görüntüle
    Cevap tarihi ve soru tarihi degerlerine göre sıralama yaptırabilirsin hocam örnek olarak yazıyorum
    Örnek;
    select * from sorular.soru_id inner join cevaplar.soru_idon ORDER*BY*cevap_tarihi DESC
  • 12-06-2020, 21:09:38
    #4
    Adalente adlı üyeden alıntı: mesajı görüntüle
    O Şekilde olmaz hocam birden fazla bir soruya cevap veriliyor soru id gruplayıp yapmak lazım ama bunun yanında son cvp almak lazım.
    Düşününce bir cok yolu var gibi geliyor bana. Bir tane fonksiyon tanımlarsınız projeniz oop mcv uzerıne yazılmışsa uygun class'ta işlemin sıklığına göre gider o soruya ait tum soru bılgısını cekersin. sonra baska bir sorguda da o soru id sine ait tum cevapları cekersin. ksort ile array obje içindeki sıralatır istediğin veriye erişip düzenletebilirsin. sistemin tam olarak nasıl calısıyor bılmedıgımden bırsey dıyemem fakat ben olsa o şekilde yapardım ek olarak database tasarımınıza göre programın çalışma şekli de kodlar da değişir kolay da çalışabilir zor da az da işlem olabilir çok ta
  • 12-06-2020, 22:24:09
    #5
    row number partition by ile kolayca yapabilirsin

    son eklenen sorular, o soruya verilen son cevaplar
  • 13-06-2020, 00:50:43
    #6
    örnek yazarmısınız ?

    suleymanyaldiz adlı üyeden alıntı: mesajı görüntüle
    row number partition by ile kolayca yapabilirsin

    son eklenen sorular, o soruya verilen son cevaplar
  • 13-06-2020, 05:57:42
    #7
    select s.soru_id, s.soru_tarih, s.soru_baslik,  c.cevap_id, c.cevap, c.cevap_tarih, ROW_NUMBER() OVER (PARTITION BY s.soru_id ORDER BY c.cevap_tarih desc ) AS cevap_sirasi
    from sorular s
    left join cevaplar c on s.soru_id = c.soru_id
    order by s.soru_tarih desc

    detayli kullanim
    row_number, rank, dens_rank
    https://dev.mysql.com/doc/refman/8.0...criptions.html
  • 14-06-2020, 01:53:27
    #8
    select soru.id, soru.baslik, soru.tarih, soru_cvp.id, soru_cvp.soru_id, soru_cvp.tarih, soru_cvp.user_id, user.id, user.name
    FROM sorular
    INNER JOIN soru_cvp
    ON soru.id = soru_cvp.soru_id
    INNER JOIN users
    ON soru_cvp.user_id = user.id
    GROUP by soru.id
    ORDER BY soru_cvp.tarih

    tablo isimleri ve kolon isimlerini değiştirerek deneyebilirsiniz. Soruları gruplayıp en son cvp yazılan sorudan aşağı doğru inecek ayrıca kullanıcı id ve kullanıcı name de bu sql ile gelmiş olur. Büyük ihtimal bu sql kodu işinizi görür.
  • 15-06-2020, 10:19:44
    #9
    Yok Buda değil. Sanırım bu soruya ynıt verecekk imse yok burada.

    ,
    freguencey adlı üyeden alıntı: mesajı görüntüle
    select soru.id, soru.baslik, soru.tarih, soru_cvp.id, soru_cvp.soru_id, soru_cvp.tarih, soru_cvp.user_id, user.id, user.name
    FROM sorular
    INNER JOIN soru_cvp
    ON soru.id = soru_cvp.soru_id
    INNER JOIN users
    ON soru_cvp.user_id = user.id
    GROUP by soru.id
    ORDER BY soru_cvp.tarih

    tablo isimleri ve kolon isimlerini değiştirerek deneyebilirsiniz. Soruları gruplayıp en son cvp yazılan sorudan aşağı doğru inecek ayrıca kullanıcı id ve kullanıcı name de bu sql ile gelmiş olur. Büyük ihtimal bu sql kodu işinizi görür.