Php İle Takipçi Sayısına Göre Listeleme
-
Her zaman ki gibi ben ve bitmeyen sorularım.
Şimdi elimizde takip tablosu var bunda eden ve edilen diye sütunlar var ve users diye bir tablomuz var bunda bildiğimiz üyeler kayıt ediliyor şimdi ben en çok takip edilen kişiyi listelemek istiyorum bunun için nasıl bir yol izlemeliyim ?
şimdiden teşekkürler
-
Takip edilen sutununda gruplama yapacaksın, en çok çıkan üye idsini gidip üye tablosundan bulup ekrana basacaksın.
-
mantıklı çözüm sunulmuş aslında ama ben ne yapardım...
üyeleri kaydettiğin tabloya bir surun ekler tiklanma diye her üye id si cagrildiğinda tıklanmadaki deger kacsa 1 arttırırdım. Listeleme yaparken de o tiklanmaya göre listelerdim
-
SELECT * FROM `adamlar` ORDER BY `takip_edilen` DESC LIMIT 0, 1 VEYA SELECT MAX(`takip_edilen`) FROM `adamlar` LIMIT 0, 1
???
-
select * from users union all select id,uyeadi,null,null
iki tarafın kolonları eşitlenene kadar null
-
Eğer tablo yapın şu şekilde ise :
CREATE TABLE `users` ( `user_id` int PRIMARY KEY AUTO_INCREMENT, `user_name` varchar(20) ); CREATE TABLE `takip` ( `takip_id` int PRIMARY KEY AUTO_INCREMENT, `takip_eden` int, `takip_edilen` int, FOREIGN KEY(`takip_eden`) REFERENCES `users` (`user_id`), FOREIGN KEY(`takip_edilen`) REFERENCES `users` (`user_id`) );
Şu şekilde en çok takip edilen kişinin id sini alabilirsin ;
select takip_edilen from takip group by takip_edilen limit 1;
********************************************************************************************
Fakat yerinde olsam birde UserIstatistik diye tablo oluşturup orada takip sayısını , takipçi sayısını , login sayısını vs tutardım. Eğer öyle yaparsan da @end 'in belirttiği gibi max fonksiyonu kullanırsın
-
select * from
(select count(id) as takipsayi,userid from takiptablosu group by userid) as sayilar
left join
(select * from users) as user on user.id=sayilar.userid
ordey by toplamsayi desc limit 1
-
coder2 bunu yazdı
Eğer tablo yapın şu şekilde ise :
CREATE TABLE `users` ( `user_id` int PRIMARY KEY AUTO_INCREMENT, `user_name` varchar(20) ); CREATE TABLE `takip` ( `takip_id` int PRIMARY KEY AUTO_INCREMENT, `takip_eden` int, `takip_edilen` int, FOREIGN KEY(`takip_eden`) REFERENCES `users` (`user_id`), FOREIGN KEY(`takip_edilen`) REFERENCES `users` (`user_id`) );
Şu şekilde en çok takip edilen kişinin id sini alabilirsin ;
select takip_edilen from takip group by takip_edilen limit 1;
********************************************************************************************
Fakat yerinde olsam birde UserIstatistik diye tablo oluşturup orada takip sayısını , takipçi sayısını , login sayısını vs tutardım. Eğer öyle yaparsan da @end 'in belirttiği gibi max fonksiyonu kullanırsın
he ilişki misali tutuyormuş, ben istatistik anlamıştım gece gözüyle
https://stackoverflow.com/questions/3679777/how-to-count-one-to-many-relationships
end tarafından 05/Haz/17 11:27 tarihinde düzenlenmiştir -
wert bunu yazdı
select * from
(select count(id) as takipsayi,userid from takiptablosu group by userid) as sayilar
left join
(select * from users) as user on user.id=sayilar.userid
ordey by toplamsayi desc limit 1
ben union select yapar zannetmiştim ama left join doğru. max(takipsayi) yazınca bu yöntem doğru.
-