yms
WM Aracı
Kullanıcı
-
Üyelik
04.12.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılım Geliştirici
-
Konum
Samsun
-
Ad Soyad
M** K**
-
Mesajlar
277
-
Beğeniler
39 / 62
-
Ticaret
0, (%0)
Merhaba üstadlar.
Başlık biraz karışık ancak elimden geldiğince derdimi anlatmaya çalışacağım.
Gruplar ve Üyeler adlı iki tablo var.
Gruplar tablosu: grup_id, grup_adi
Üyeler tablosu: üye_id, uye_grup
uye_grup sütununda, üyenin bağlı olduğu grubun 'grup_id'si yazılı.
Yapmak istediğim şey; grupları üye sayılarına göre listelemek.
"Select * From Gruplar Order By ???" şeklinde bir sorguya kalkışamadım bile :)
Ne yapabilirim bu sorunu aşmak için?
@Bean Love getLove()
tiwaly
NodeJS / PHP / NoSQL
Kullanıcı
-
Üyelik
10.10.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılımcı
-
Konum
İzmir
-
Ad Soyad
i** A**
-
Mesajlar
363
-
Beğeniler
135 / 104
-
Ticaret
7, (%100)
Bu tarz durumlar için inner join komutu ile iki tabloyu birleştiriyoruz. Aşağıda örneği mevcut.
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
sizin durum için
SELECT * FROM Gruplar INNER JOIN uyeler ON grup_id = uye_grup ORDER BY uye_id
yms
WM Aracı
Kullanıcı
-
Üyelik
04.12.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılım Geliştirici
-
Konum
Samsun
-
Ad Soyad
M** K**
-
Mesajlar
277
-
Beğeniler
39 / 62
-
Ticaret
0, (%0)
Cevabınız için çok teşekkür ederim ancak bu şekilde üye sayısına göre değil de ID'sine göre sıralanıyor. Yapmak istediğim şey; grupları üye sayılarına göre azalan bir şekilde listelemek. Yani üye sayısı fazla olan gruptan, az olan gruba doğru bir listeleme yapmaya çalışıyorum.
@Bean Love getLove()
tiwaly
NodeJS / PHP / NoSQL
Kullanıcı
-
Üyelik
10.10.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılımcı
-
Konum
İzmir
-
Ad Soyad
i** A**
-
Mesajlar
363
-
Beğeniler
135 / 104
-
Ticaret
7, (%100)
Öncelikle özür dilerim soruyu biraz yanlış anlamışım. Veritabanınızı php ile mi kullanıyorsunuz. Çünki sorunuzun cevabı için işin içine biraz programlama katmak gerekli. Kullandığınız dili söylerseniz ona göre bir çözüm üretirim.
yms
WM Aracı
Kullanıcı
-
Üyelik
04.12.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılım Geliştirici
-
Konum
Samsun
-
Ad Soyad
M** K**
-
Mesajlar
277
-
Beğeniler
39 / 62
-
Ticaret
0, (%0)
ASP kullanıyorum ama veritabanı MySQL. Verileri Array'e atayıp fonksiyon kullanayım dedim ancak işin ucu yine "Order By"a gelince sonuna neyi, nasıl ekleyeceğimi bulamıyorum.
@Bean Love getLove()
tiwaly
NodeJS / PHP / NoSQL
Kullanıcı
-
Üyelik
10.10.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılımcı
-
Konum
İzmir
-
Ad Soyad
i** A**
-
Mesajlar
363
-
Beğeniler
135 / 104
-
Ticaret
7, (%100)
O zaman şu şekilde bir yol göstereyim. İlk olarak 2 boyutlu bir dizi oluşturun. Daha sonra gruplar tablosunu veritabanından çekin çektiğiniz verileri while içinden geçirirken her gelen veri için grup numarasını baz alarak uyeler tablosundan veri çekin.
Örneğin: SELECT * FROM gruplar ile verileri çektiniz. Gelen veriler Q dizisinde geldi diyelim
Dönen her satır için SELECT * FROM Uyeler WHERE uye_grup = Q[grup_id] sorgusunu çektiniz. Bu sorguyada Z diyelim. İlk başta oluşturduğumuz 2 boyutlu dizinin adı G olsun.
Şimdi Z sorgusunda gelen verilerin satır toplamı bize hangi grupta kaç üye olduğunu verir.
Q dizisindeki grup_adi sütunundanda grubun adını çekebilirsin bu sayede
G[][0] = grup_adi
G[][1] = Z sorgu sayısı
atarsan elinde grup isimleri ve kişi sayılarından oluşan bir dizi olmuş olur. Biraz karmaşık oldu farkındayım ama sadece SQL ile çözümü olduğunu sanmıyorum. Umarım anlatabilmişimdir.
Dipnot : SELECT * FROM Uyeler WHERE uye_grup = Q[grup_id] sorgusu yerine SELECT COUNT(*) FROM Uyeler WHERE uye_grup = Q[grup_id]; sorgusunu da kullanabilirsin. Bu sorgu sana direkt olarak içeride kayıtlı veri sayısını verir.
1 kişi bu mesajı beğendi.
yms
WM Aracı
Kullanıcı
-
Üyelik
04.12.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılım Geliştirici
-
Konum
Samsun
-
Ad Soyad
M** K**
-
Mesajlar
277
-
Beğeniler
39 / 62
-
Ticaret
0, (%0)
Üstad bu şekilde veriler çekilebiliyor, buraya kadar sorun yok. Ancak grupları ekrana üye sayılarına göre azalan bir şekilde yazdıramıyorum. Sıralamayı yalnızca grupları çektiğim sorguda Order By ile değiştirebiliyorum.
Anlaşılan bunun bir yolu yok. Mecburen Gruplar tablosuna grup_toplam şeklinde bir sütun açıp, üye eklendiğinde ve silindiğinde kaydı güncelleyeceğim.
Sana da çok zahmet verdim. Ayırdığın vakit ve emek için teşekkür ederim.
@Bean Love getLove()
-
Üyelik
11.05.2014
-
Yaş/Cinsiyet
46 / E
-
Meslek
elektronik
-
Konum
İstanbul Avrupa
-
Ad Soyad
D** D**
-
Mesajlar
8
-
Beğeniler
1 / 0
-
Ticaret
0, (%0)
Merhabalar: sayın üstadlarım bitürlü çözemediğim bir olay var lütfen yardımcı olurmusunuz.
Bunu bayağı araştırdım örneğini bulamadım. genelde veri tabanından 10 ile 20 arası yada 50 ile 100 arası gibi seçip veri çekmeyi anlatmışlar.
Ama ben rakamı seçmeyeceğim kendim iki adet kutucuk içine yazıp, yazdığım rakamların aralığını listeletmek istiyorum. bunu nasıl yaparız.
Diyelim birinci text kutucuguna 1000 yazdım diğerine ise 2513 yazdım ve ara dedğimde 1000 ile 2513 aralığındaki ilanlarım listelensin. lütfen yardımcı olurmusunuz. birde index.php sayfam harici arama.php sayfam var bu arama.php sayfamada kod eklemelimiyim. bunun örneğini öğrenirsem web sitemde birçok arama seçenekleri yapabilcem. buda benim çok işime yarayacak lütfen yazmaktan çekinmeyin inanın bilgiyi paylaşanların değeri başka.
Not: konuyu buraya açtım umarım yanlış olmamıştır. olduysada kusuruma bakmayın.