Pluton Mesaj tarihi: Ekim 7, 2012 Paylaş Mesaj tarihi: Ekim 7, 2012 Selamlar, şimdi şu aşağı şekilde tablom var; ID UserName Monster Pluton MON_HDS Di MON_ZEUS Cihan MON_HERA Gral MON_HDS Paticik MON_ARES Pluton MON_HDS Pluton MON_ZEUS Cihan MON_HERA Şimdi mssql kullanıyorum ve olay kısaca şu şekilde. Her kişinin öldürdüğü toplam farklı yaratık sayısını bulmak istiyorum. Yukarıdaki tabloya göre şu şekilde olması lazım; UserName Monster Total Pluton MON_HDS 2 Pluton MON_ZEUS 1 gibi. Group by ile falan baya denedim ama username ile mob sayılarını birleştirmeyi beceremedim. Ateistler bunuda açıklarsa sevinirim Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Ekim 7, 2012 Paylaş Mesaj tarihi: Ekim 7, 2012 select username, monster, count(*) from t1 group by username, monster Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Ekim 7, 2012 Paylaş Mesaj tarihi: Ekim 7, 2012 yalnız toplam farklı yaratık sayısını bulmak istiyorsan şu daha mantıklı değil mi? select username, count(distinct monster) from t1 group by username Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Ekim 7, 2012 Konuyu açan Paylaş Mesaj tarihi: Ekim 7, 2012 İlk verdiğin gayet hoş oldu. Şimdi her yaratığın bir puanı var. Öyle olduğu için yaratığın kaç tane kesildiğini bulmam gerek. Birde şey sorsam. PHP ile yapılabilir ama belki sql'den halledebilirim. Pluton Mob_HDS 2 Şimdi mesela Pluton 2 tane Mob_HDS öldürmüş. Buna göre kazandığı puan 60 olması lazım. Sql içinde if döngüsü ile falan sütun olarak yazdırabilir miyim bunu php ile hiç uğraşmasam Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Baggio Mesaj tarihi: Ekim 7, 2012 Paylaş Mesaj tarihi: Ekim 7, 2012 Yaratığın vereceği puanı başka bir tablodan alıyorsun muhtemelen, onları da join etmen gerekir, o tablonun da yapısını verirsen bir örnek yazayım. Şöyle olur hatta, tablo ve field isimlerini sen ihtiyacına göre düzeltirsin: select t1.username, t1.monster, count(t1.*) * t2.puan from kills t1, monsters t2 where t1.monster=t2.monster group by t1.username, t1.monster Oracle için böyle, MySQL/MSSQL için syntax çok az değişiyor olabilir ama aynı heralde ya. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Ekim 7, 2012 Konuyu açan Paylaş Mesaj tarihi: Ekim 7, 2012 Ya aslında başka tabloda tutmuyordum array olarak dosyada tutuyordum ama biranda mantıklı geldi farklı tabloda tutmak daha mantıklı geldi. 5-6 tane falan varda tablo açmak istememiştim. Ama tutucaz mecburen teşekkürler BAggigo INNER JOIN olayını hallederim. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Ekim 7, 2012 Paylaş Mesaj tarihi: Ekim 7, 2012 Ben niye varim olm tabloda? sdf Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Ekim 7, 2012 Paylaş Mesaj tarihi: Ekim 7, 2012 Yalnız tavsiyem string match yaptırtma. Yani monster'ların durduğu bir tablon olsun. Monster'ların puan bilgileri ve id'leri olsun. kills tablosunda ise user_id, monster_id bulunsun. sen monster'ın adını öğrenmek istiyorsan, join edip bulursun zaten. Öbür türlü transaction tablosu uzayınca bu eşleşmenin performansı düşer. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Ekim 7, 2012 Konuyu açan Paylaş Mesaj tarihi: Ekim 7, 2012 @di ne bilim olm aklıma ilk sen geldin. Belki mssql olayını hatırlatmak istemişimdir :D @riglous çok teşekkür ettim yardımların ve verdiğin bilgiler içib Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Ekim 7, 2012 Konuyu açan Paylaş Mesaj tarihi: Ekim 7, 2012 Şimdi son birşey kaldı ve nasıl aratacağımı dahi bilemedim. Şöyle bir tablom oldu; Username , MonsterID , Point , TotalKill , TotalPoint Pluton , 4 , 35 , 2 , 70 Pluton , 5 , 25 , 3 , 75 Pluton , 6 , 45 , 1 , 45 Tablo bu, benim yapmak istediğim olay bu 3 sütunu birleştirip şöyle birşey yapmak; Username, TotalKill , TotalPoint Pluton , 6 , 190 Bu şekilde satır birleştirip SUM() yapılabilir mi ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Ekim 7, 2012 Paylaş Mesaj tarihi: Ekim 7, 2012 select Username, sum(TotalKill) , sum(TotalPoint) from t1 group by username Yalnız bu iş için ara tablo oluşturman gerekmez yani inner select'lerle tek seferde yapabilirsin. select t1.username, t1.monsterid, t2.point, count(t1.*) totalkill, count(t1.*) * t2.point totalpoint from kills t1, monsters t2 where t1.monster=t2.monster group by t1.username, t1.monster Bu senin oluşturduğun ara tablonun sorgusu. select s1.username, sum(s1.totalkill) totalkill, sum(s1.totalpoint) totalpoint from ( select t1.username, t1.monsterid, t2.point, count(t1.*) totalkill, count(t1.*) * t2.point totalpoint from kills t1, monsters t2 where t1.monster=t2.monster group by t1.username, t1.monster ) s1 group by s1.username Bir de bunu daha okunaklı yazabilirsin. select s1.username , sum(s1.totalkill) totalkill , sum(s1.totalpoint) totalpoint from (select t1.username , t1.monsterid , t2.point , count(1) totalkill , sum(t2.point) totalpoint from kills t1 , monsters t2 where t1.monsterid=t2.monsterid group by t1.username , t1.monster ) s1 group by s1.username böylece nereden ne geldiğini görmen kolaylaşır. ------- Tüm bunların dışında tabloların id üzerinden ilerlemesi ve timestamp olması esastır. Bu kapsamda ben senin yerinde olsam tabloları aşağıdaki gibi yaratırdım. create table kills (trx_id int, trx_date timestamp, user_id int, monster_id int); create table monsters (monster_id int, monster_name varchar(100), monster_point int, trx_date timestamp); create table users (user_id int, username varchar(100), trx_date timestamp); Böylece user'larla ilgili tüm bilgileri users tablosunda tutarsın. Monster'larla ilgili tüm bilgileri de monsters tablosunda. Hatta bu tür işlerde genelde monster'larda versiyonlama oluyor. Yani monster_id'nin yanında bir de version_id oluyor. Böylece bir yaratığın puanı değiştiği zaman eski hesaplar şaşmaz. Eğer ilgileniyorsan açıklayayım ama çok da önemli değil diyorsan hiç kasmayayım, yeterince WoT oldu. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Ekim 7, 2012 Konuyu açan Paylaş Mesaj tarihi: Ekim 7, 2012 Çok teşekkürler riglous gayet açıklayıcı ve öğretici daha fazla yorulma. Bu kadarı bile şahane oldu Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar