İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Verileri Belirli Kriterlere Göre Sıralama Konusunda Ufak Bir Soru

Reward Hood

0
İyinet Üyesi
Katılım
31 Aralık 2011
Mesajlar
20
Reaction score
0
İyi günler arkadaşlar, hemen sorunu kısaca anlatayım;

Elimde şu formatta bir tablo var:

Üye Adı --- Referans ----- Üyelik Tarihi --- Tamamlanan Anket Sayısı
-----------------------------------------------------------------
Orhan --------lisanssız---------2012-01-01------------20----------(lisanssız = Tahmin ettiğiniz gibi "kimse tarafından davet edilmemiş" manasında.)
Ali-----------Orhan---------2012-01-01------------10----------
Murat-------Orhan----------2012-01-05------------2-----------
Cüneyt-----Orhan----------2012-01-05------------0-----------
Hasan---------Ali----------2012-01-05------------2-----------
Burhan--------Ali----------2012-01-05------------2-----------

Önemli olan ve kullanacağımız sütunları yazdım. Elimizdeki bu tabloya göre, üyelerin getirdikleri referans sayılarını, üye olma tarihi 2012-01-04'ten büyük ve tamamlanan anket sayısı 0'dan büyük olanları sayarak ilk 3 kişiyi listelemek istiyorum.

Bu kriterlere göre şu şekilde bi tablo oluşmalı:
Referans sütnuna bakılırsa Orhan 3 referans getirmiş(Ali, Murat ve Cüneyt) ama bunlardan biri hiç anket tamamlamamış ve birinin de üyelik tarihi 2012-01-04'ten küçük. Öyleyse bu tabloda Orhan'ın getirdiği ref sayısı 1 olmalı. Ali ise 2 referans getirmiş(Hasan ve Burhan) ve belirlediğimiz kriterlere uymakta. İlk üç kişi demiştik, hiç referans getirmeyen kişilerden tabloda ismi ilk yazılmış olan otomatik alınacaktır(Kimseyi davet etmemiş olanlar Murat, Cüneyt, Hasan ve Burhan ve ilk sırada Murat var.). Tablonun tam görünümü şöyle olmalı:

Sıralama -- Üye Adı -- Getirdiği Referans Sayısı
---1--------Ali--------------2--------------
---2------Orhan------------1--------------
---3------Murat-------------0-------------


Bu sıralamayı nasıl yaparız? Kriterlerin olduğu kısmı biraz karışık yazmışım sanırım; daha düzgün ve daha açık anlatmaya çalışayım;

En çok referans getiren ilk üç kişiyi sıralayacağım. Bu referansların kayıt olma tarihi 2012-01-04 ten büyük olmalı ve tamamlanan anket sayısı sıfırdan farklı olmalı.

Ben işin içinden pek çıkamadım.. Umarım yardım edebilecek birisi vardır
 

CryForLive

0
İyinet Üyesi
Katılım
31 Ocak 2012
Mesajlar
164
Reaction score
0
Konum
İstanbul
Listelerken limit koyarsın yani 3 kişi listelemek istiyorsak eğer

Kod:
<?php
$liste = mysql_query("select * from tablo_adi LIMIT 3");

while ($say = mysql_fetch_array($liste)) {
if ($say["id"] > 0) {

echo $say["user"];
}
}

?>

Bu şekilde senin dediğin biçimde saydıracağını düşünüyorum deneyip sonucu yazarsan sevinirim. Kolay gelsin.
 

Reward Hood

0
İyinet Üyesi
Katılım
31 Aralık 2011
Mesajlar
20
Reaction score
0
Listelerken limit koyarsın yani 3 kişi listelemek istiyorsak eğer

Kod:
<?php
$liste = mysql_query("select * from tablo_adi LIMIT 3");

while ($say = mysql_fetch_array($liste)) {
if ($say["id"] > 0) {

echo $say["user"];
}
}

?>

Bu şekilde senin dediğin biçimde saydıracağını düşünüyorum deneyip sonucu yazarsan sevinirim. Kolay gelsin.

Evet gönderdiğiniz şekilde listelemeyi sınırlamış olurum ama benim istediğim bu değil. Ben bu tablodaki üye isimlerini listeleyip, bu üyelerin kaçar kişiyi referans olarak getirdiklerini saydırmak ve en çok üye getiren ilk üç kişiyi sıralamak istiyorum. Kaç kişiyi referans getirdiklerini de Referans sütunu altında üye isminin kaç kez geçtiğini saydırarak bulabiliriz. Ama benim kafam buradan sonrasına pek basmıyo.
 

CryForLive

0
İyinet Üyesi
Katılım
31 Ocak 2012
Mesajlar
164
Reaction score
0
Konum
İstanbul
O zaman şu şekil yapsak bizim tablodaki referans_num diye bir sütunumuz var ve birde user diye biz burda ki kişileri sıralayıp karşılarına referansları toplam kaç bunu yazdırmak istiyoruz.

şimdi bizim referans_num sütunumuz ve user sütunumuz altında
ahmet ----- 10

şeklinde bir kişi var

Kod:
$liste mysql_query("select * from tablo_adi LIMIT 3");
while ($say = mysql_fetch_array($liste)) {
echo $say[user].$say["referans"];

}

bu şekilde olması lazım hocam
 

Reward Hood

0
İyinet Üyesi
Katılım
31 Aralık 2011
Mesajlar
20
Reaction score
0
O zaman şu şekil yapsak bizim tablodaki referans_num diye bir sütunumuz var ve birde user diye biz burda ki kişileri sıralayıp karşılarına referansları toplam kaç bunu yazdırmak istiyoruz.

şimdi bizim referans_num sütunumuz ve user sütunumuz altında
ahmet ----- 10

şeklinde bir kişi var

Kod:
$liste mysql_query("select * from tablo_adi LIMIT 3");
while ($say = mysql_fetch_array($liste)) {
echo $say[user].$say["referans"];

}

bu şekilde olması lazım hocam

Mümkün olsaydı zaten referansları saydıracaktım ama scripti kendim hazırlamadım, satın aldım ve satın aldığım firma da script'in cgi dosyalarını özel bir şekilde şifrelediğinden herhangi bir müdahalede bulunamıyorum, yani scripte müdahale edip referansları saydırmam mümkün değil, ancak hazırlayacağım sayfada önce referansları saydırıp bunları veritabanına ekletip sonra bir sıralama yapmam mümkün ama bu durumda sürekli bir şekilde veritabanına bilgi girişi olacak ve bunun bir zararı olur mu bilemiyorum.
 

CryForLive

0
İyinet Üyesi
Katılım
31 Ocak 2012
Mesajlar
164
Reaction score
0
Konum
İstanbul
Yoo sürekli update olucak o zaman güncelleyip ekleme yapıcaksın yani bence bir sorun olacağını sanmıyorum.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
auto-increment alanlari versen daha rahat olabilir ama su sorguyu bi dene bakalim.

SELECT COUNT(m.uye_adi) toplam, r.uye_adi gonderen FROM uyeler m
INNER JOIN uyeler r ON r.uye_adi=m.referans
WHERE m.uyelik_tarihi > '2012-01-04' AND m.anket_sayisi > 0
GROUP BY r.uye_adi
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst