• 15-08-2009, 21:53:05
    #1
    Arkadaşlar merhaba,

    Ben sections='4' bölümündeki içerikleri ana sayfada son on içeriğe göre
    ORDER BY created
    şeklinde sıralıyorum. Ancak son 10 içerik hangi kategoriye yüklenmişse, anasayfam o kategorinin içerikleri ile doluyor.

    Anlaşılacağı üzere ben istiyorum ki anasayfada 300 adet kategoriden sadece en son güncellenen 10 kategorinin en son içerikleri çıksın. Her bir kategoriden sadece bir içerik (tarihe göre) verilsin.

    işte veri tabanı denemelerim:

    Başarısız 1:
    SELECT id, title, catid  FROM jos_content WHERE sectionid='4' ORDER BY created DESC LIMIT 0,10
    Başarısız 2:
    SELECT id, title, catid  FROM jos_content WHERE sectionid='4' AND catid ORDER BY created DESC LIMIT 0,10
    Başarısız 3:
    SELECT id, title, catid  FROM jos_content WHERE sectionid='4' GROUP BY catid ORDER BY created DESC LIMIT 0,10
    Bu sonuncusu aslında olmalıydı benim mantığıma göre. Ancak böyle olunca en son eklenen kategorilere göre sıralıyor, oysa derdimiz en son 10 yazıyı yayınlarken kategori tekrarı yapmamaktır.
  • 15-08-2009, 23:50:14
    #2
    SELECT id, title, catid  FROM (SELECT * FROM jos_content ORDER BY id DESC) WHERE sectionid = '4' GROUP BY catid ORDER BY created DESC LIMIT 0, 10
    Dener misin ?
  • 16-08-2009, 00:06:56
    #3
    Ama benim sorunum CATID (yani Categori ID) ile.
    Ben içerikleri GROUP BY catid şeklinde sıraladığım zaman da hangi categoriler en son yaratılmışsa onları diziyor ana sayfaya.

    Velhasili kelam tam ustalık gerektiren bir konu.

    içerikleri kategorilere göre sırala, ama TEKRAR yapma, yani aynı kategoriden 2 tane içeriği yazdırma.
  • 16-08-2009, 00:14:43
    #4
    Her kategoriden bir tane kayıt istiyorsan GROUP BY catid,
    Her catid'nin en son mesajını almak için de yukarıda yaptığım gibi önce sıralayıp sonra gruplama yöntemi (burada id kısmının otomatik artan olduğunu varsayıyorum. yani id nosu büyük olan sın yayınlanmıştır diye).

    Ya ben sorunu yanlış anladım ya da sen benim verdiğimi denemedin ..
  • 16-08-2009, 00:24:02
    #5
    Ama yeni açtığınız parantezi nerede açıyorum ?
  • 16-08-2009, 00:25:53
    #6
    Yukarıda örneğini verdim.
  • 16-08-2009, 00:31:30
    #7
    Evet ama tırnak sorunu çıkıyor.
  • 16-08-2009, 00:34:22
    #8
    sectionid = '4'

    kısmını senin kodundan aldım. Eğer sayısal bir değerse

    sectionid = 4

    şeklinde dene.
  • 16-08-2009, 00:41:55
    #9
    Şimdi şöyle bir bölüm eklediniz:

    (SELECT * FROM jos_content ORDER BY id DESC)

    Evet ama (" şeklinde mi başlayacak, (' şeklinde mi, yoksa sadece ( şeklinde mi?

    Bunların hepsini denedim kabul etmedi.