• 14-01-2009, 14:39:10
    #1
    merhaba arkadaşlar,

    elimde bir veritabanı var.. içindeki veriler şu şekilde:

    ANKARA
    İSTANBUL
    ZONGULDAK
    İSTANBUL
    İSTANBUL

    ben bu verileri listeleyerek ekrana yazdırmak istiyorum ama her bir il sadece bir kez yazılsın bir defa yazılan bir il bir daha yazılmasın istiyorum.. yani listeleme sonucunda

    ANKARA
    İSTANBUL
    ZONGULDAK

    yazılmalı sadece.. bunu nasıl yapabilirim?
  • 14-01-2009, 14:44:19
    #2
    Üyeliği durduruldu
    $sorgu = mysql_query("SELECT * FROM tablo_adi GROUP BY il");
    "il" burada il isimlerinin bulunduğu sütunun adı
  • 14-01-2009, 14:56:08
    #3
    Üyeliği durduruldu
    NaCReS adlı üyeden alıntı: mesajı görüntüle
    merhaba arkadaşlar,
    elimde bir veritabanı var.. içindeki veriler şu şekilde:
    ANKARA
    İSTANBUL
    ZONGULDAK
    İSTANBUL
    İSTANBUL
    ben bu verileri listeleyerek ekrana yazdırmak istiyorum ama her bir il sadece bir kez yazılsın bir defa yazılan bir il bir daha yazılmasın istiyorum.. yani listeleme sonucunda
    ANKARA
    İSTANBUL
    ZONGULDAK
    yazılmalı sadece.. bunu nasıl yapabilirim?
    order by vermene ragmen İ ler sorna ise veri tabanin türkçe karakter setinde olmadığından kaynaklanıyor
  • 14-01-2009, 15:03:15
    #4
    Üyeliği durduruldu
    $sorgu = mysql_query("SELECT distinct(il) FROM tablo_adi");
    veya
    döngü döner
    o sırada ekrana basmazsın döngü döndüğü sürece
    $arrayBas diye bir değişkene atarsın
    döngü bitince aşağısına
    $arrayBas = array_unique($arrayBas);
    foreach($arrayBas as $bas) echo $bas;
    gibi kullanabilirsin

    eğer büyük küçük harf lerde sorun yaratırsa veritabanını latin5_turkish_ci seçebilirsiniz
  • 14-01-2009, 15:14:42
    #5
    @Vinsanity
    söylediğin şey gayet mantıklı gözüküyor ancak çalıştıramadım.. kullandığım sorgulama kodu bu

    Alıntı
    $sql = ('SELECT il FROM `iller` ORDER BY `id` DESC LIMIT 0 , 50 GROUP BY `il`')
    order by değerini kaldırdığım zaman çalışıyor order by ve group by aynı anda kullanılamaz mı?

    @sdemirkeser
    karakter kodlamasıyla alakalı birşey değil bu sanırım yanlış anladın demek istediğimi..
  • 14-01-2009, 15:20:14
    #6
    Üyeliği durduruldu
    eğer alfabetik sıraya göre illeri girdiysen

    $list = mysql_query("SELECT il FROM iller ORDER BY id DESC");

    yeterli olacaktır.
  • 14-01-2009, 15:29:15
    #7
    cevap yazan herkese teşkkürler.. tabloda sadece şehir isimleri yok.. üyelerin bulunduğu bir tablo düşünün benim almaya çalıştığım sadece üyelerin şehirleri.. diyelim db de 1000 tane üye var.. ben siteme katılan son 10 üyenin şehirlerini listelemek istiyorum.. ama bu 10 kişinin içinde 5i aynı şehirden kaydolduysa sadece bi kez o şehir listelensin ve daha önceki kayılara geçilsin alt alta 5 defa aynı şehri yazdırmak istemiyorum.. umarım anlatabilmişimdir..

    Group by komutu yukarıda bahsettiğim neden yüzünden işe yaramadı.. Distinct komutu da direk şehirleri gruplandırıyor son 10 üye kim bakmadan..

    bu durumda tek seçenek array kullanmak sanırım.. ancak array konusunda çok zayıfım..
    @saho nun verdiği örneği bana biraz daha ayrıntılı açıklayabilecek var mı acaba?
  • 14-01-2009, 15:55:49
    #8
    NaCReS adlı üyeden alıntı: mesajı görüntüle
    cevap yazan herkese teşkkürler.. tabloda sadece şehir isimleri yok.. üyelerin bulunduğu bir tablo düşünün benim almaya çalıştığım sadece üyelerin şehirleri.. diyelim db de 1000 tane üye var.. ben siteme katılan son 10 üyenin şehirlerini listelemek istiyorum.. ama bu 10 kişinin içinde 5i aynı şehirden kaydolduysa sadece bi kez o şehir listelensin ve daha önceki kayılara geçilsin alt alta 5 defa aynı şehri yazdırmak istemiyorum.. umarım anlatabilmişimdir..
    Group by komutu yukarıda bahsettiğim neden yüzünden işe yaramadı.. Distinct komutu da direk şehirleri gruplandırıyor son 10 üye kim bakmadan..
    bu durumda tek seçenek array kullanmak sanırım.. ancak array konusunda çok zayıfım..
    @saho nun verdiği örneği bana biraz daha ayrıntılı açıklayabilecek var mı acaba?
    DISTINCT ile tabloda belirtilen alanda ne kadar aynı değer olursa olsun sadece birbirinden farklı değerleri seçebiliyoruz.
  • 14-01-2009, 16:48:35
    #9
    Üyeliği durduruldu
    NaCReS adlı üyeden alıntı: mesajı görüntüle
    @saho nun verdiği örneği bana biraz daha ayrıntılı açıklayabilecek var mı acaba?

    group by ile order by in yerini değiştirisen calisir

    $sql = ('SELECT il FROM `iller` GROUP BY `il` ORDER BY `id` DESC LIMIT 0 , 50 ')