• 23-08-2009, 14:13:35
    #10
    janocan adlı üyeden alıntı: mesajı görüntüle
    O zaman tek bir kategoriden 10 tane içerik sıralıyor. GROUP BY catid yazdığım halde.
    İlginçtir, GROUP BY catid 'i kaldırınca da başka bir kategoriden 10 tane sıralıyor.
    Aslında bu ilginç sonuçları not almam lazım, ama sorunum o kadar kafamı kurcalıyor ki, şu anda labarotuvar çalışması gibi not alacak durumda değilim.

    benzer yapıya sahip tablolarımda denedim limit kısmı hata verdi limit kaldırdım sorun olmadı group by çalıştı peki mutlaka son eklenen 10 kayıt olmak zorunda mı ? benim yazdığım sorgu her koategorinin son kaydını getiriyordu bu işini görmez mi ?
  • 23-08-2009, 14:42:33
    #11
    ismailperim adlı üyeden alıntı: mesajı görüntüle
    tablo yapını çok iyi bilmediğim için aklımda oluşturduğum Kategori ve Yazı tablolarıyla örnekliyorum;
    SELECT   ID, (SELECT CONCAT("<a href='Yazilar.php?ID=",ID,"'>",Baslik,"</a>") FROM Yazilar WHERE KatID = K.ID ORDER BY ID DESC LIMIT 1)
       FROM  Kategoriler K

    Burada benim CONCAT'tan anladığım o ki iki tane tabloyu birbirine bağlamış. Yaptığım INNER JOIN de bu sonucu alıyor. Eğer eklenen içerikler içerisinde TARİH benim için önemli olmasaydı bu yeterli olurdu, ama tarih benim için vazgeçilmez bir ölçüdür.

    Mutlaka son 10 içerik, veya son 20 içerik, bu sayı önemli değil.
    Mutlaka son tarihlere göre olmalı
    Mutlaka aynı kategoride tekrar olmamalı,
    Mutlaka sadece bir bölümün kategorileri olmalı,
    Mutlaka sadece yayınlanmış olan içerikler olmalı. vs vs.

    Tüm bunlar içerisinden 3'ncüsünü yapamadım gitti. GROUP BY ölçüsü neden burda böyle sorun çıkarıyor bir anlasam. En iyi kod odur aslında. Ama onu nasıl oluyor da yanlış kullanıyorum. Çünkü kullandığım zaman en son eklenen 10 kategoriyi esas alıyor. Oysa son eklenen içerikleri esas almalıydı.
  • 23-08-2009, 15:30:44
    #12
    Üyeliği durduruldu
    [media]www.saho.in/kat-distinct.jpg[/media]

    denedim localde ama bir sıkıntı yok (:
  • 23-08-2009, 15:45:48
    #13
    şimdi @saho nun yanıtına baktım distinct çalıştığını göstermiş, bende kendi localimde denedim. distinct denediğin sorguda şöyle birşeyle karşılaştım,
    "SELECT DISTINCT (catid) jos_content.id, j........."
    bu satırı
    "SELECT DISTINCT (jos_content.catid) jos_content.id, j........."
    veya jos_content.catid kısmını uygun olan şekliyle değiştirip yani kolonun tam konumunu vererek dener misin ?
    @saho nun sorgusu tek tablo fakat seninki tek tablo olmadığından direk dist. içine catid yazdığın zaman catid kolonunu bulamamış olabilir. anlatabildim umarım.
  • 23-08-2009, 16:10:59
    #14
    Üyeliği durduruldu
    birde görebildiğim kadarıyla arada virgül kullanmamışsınız gözünüzden kaçtı sanırım : )

    ++)
    {
    $veri=mysql_fetch_array( mysql_query("SELECT DISTINCT (catid) jos_content.id, jos_content.title, jos_categories.image, jos_categories.name,"

    DISTINCT (catid) buradan sonra virgül konulmalı

    ++)
    {
    $veri=mysql_fetch_array( mysql_query("SELECT DISTINCT (catid), jos_content.id, jos_content.title, jos_categories.image, jos_categories.name,"


    gibi
  • 23-08-2009, 16:12:17
    #15
    Şu hatayı veriyor:
    mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
    Şimdi sabahtan yaptığım denemeler sayesinde anladım ki bu işin tek çözümü GROUP BY catid yazarak olur.
    Ancak sorgunun son satırındaki DESC yüzünden 100 tane kategori içinden ID'leri en büyük olan 10 taneyi sıralıyor. DESC 'i kaldırınca da kategorilerimden ID'leri en küçük olan 10 taneyi sıralıyor.
    Evet problem buymuş.
    Ama nasıl bu problemi çözeceğimi bilmiyorum. Tekrarı önlemesine önlüyoruz da, filtreleme yanlış.
    saho adlı üyeden alıntı: mesajı görüntüle
    birde görebildiğim kadarıyla arada virgül kullanmamışsınız gözünüzden kaçtı sanırım : )
    Evet şimdi düzelterek deneyince çalıştı:
    <?
    	for($i=0;$i<10;$i++)
    	{
    $veri=mysql_fetch_array( mysql_query("SELECT DISTINCT (catid), jos_content.id, jos_content.title, jos_categories.image, jos_categories.name,"
    . "\n jos_content.catid, jos_content.sectionid"
    . "\n FROM jos_content"
    . "\n INNER JOIN jos_categories ON jos_content.catid = jos_categories.id"
    . "\n INNER JOIN jos_sections ON jos_content.sectionid = jos_sections.id"
    . "\n WHERE jos_content.sectionid='4'"
    . "\n ORDER BY jos_content.created"
    . "\n DESC LIMIT $i,1"));
    ?>
    Ama yine kategorilerde tekrar var.