lostyazilim
tr.link

Veri tabanında ki aynı olan verilerin sayısını bulma

5 Mesajlar 2.884 Okunma
lstbozum
tr.link

loss07 loss07 WM Aracı Kullanıcı
  • Üyelik 25.03.2019
  • Yaş/Cinsiyet 28 / E
  • Meslek I-T
  • Konum Antalya
  • Ad Soyad S** U**
  • Mesajlar 72
  • Beğeniler 13 / 11
  • Ticaret 0, (%0)
Benim veri tabanım da "oylar" isimli bir tablo var ve ben bu tablodaki anketno stunundaki değerlerden, en çok olan değerin, kaç tane olduğunu bulmak istiyorum.



Yani 1 sayısın kaçtane olduğunu 2 sayısından kaçtane olduğunu ... gibi.
Amacım 1 ve 50. satırdaki en çok aynı değere sahip olan verinin adetini bulmak.
Umarım anlatabilmişimdir.
 

 

wmaraci
reklam

emreyvz emreyvz .NET Core & Angular & PHP Kullanıcı
  • Üyelik 19.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad E** Y**
  • Mesajlar 691
  • Beğeniler 110 / 250
  • Ticaret 24, (%100)
Merhaba, aşağıdaki SQL kodu ile her anketno'nun kaç adet olduğunu büyükten küçüğe sıralı olacak şekilde görebilirsiniz.

Örneğin:

anketno | sayac
2 7
3 6
1 2
4 1

SQL Kodu:


SELECT anketno,COUNT(*) as sayac FROM `oylar` GROUP BY anketno ORDER BY sayac DESC



Kolay gelsin.
 

 

loss07 loss07 WM Aracı Kullanıcı
  • Üyelik 25.03.2019
  • Yaş/Cinsiyet 28 / E
  • Meslek I-T
  • Konum Antalya
  • Ad Soyad S** U**
  • Mesajlar 72
  • Beğeniler 13 / 11
  • Ticaret 0, (%0)
Çok saolun teşekkürler peki bunun sorgusunu nasıl yapmam gerek mantığını bir türlü anlayamadım
Mesela sorguyla en büyük değerden en küçük değere doğru değerleri alıp değişkene atamam gerekli.
 

 

emreyvz emreyvz .NET Core & Angular & PHP Kullanıcı
  • Üyelik 19.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad E** Y**
  • Mesajlar 691
  • Beğeniler 110 / 250
  • Ticaret 24, (%100)

loss07 adlı üyeden alıntı

Çok saolun teşekkürler peki bunun sorgusunu nasıl yapmam gerek mantığını bir türlü anlayamadım
Mesela sorguyla en büyük değerden en küçük değere doğru değerleri alıp değişkene atamam gerekli.


Google'da PHP Mysql İşlemleri şeklinde arama yapıp nasıl kullanacağınızı öğrenebilirsiniz. Ekstra olarak en büyük değerden en küçüğe sıralamanıza gerek yok sorgu zaten bu işlemi de yapıyor. Sıralı bir şekilde dizi olarak döndürüyor. While ile dizi elemanlarını kullanabilirsiniz.
 

 

wmaraci
wmaraci

loss07 loss07 WM Aracı Kullanıcı
  • Üyelik 25.03.2019
  • Yaş/Cinsiyet 28 / E
  • Meslek I-T
  • Konum Antalya
  • Ad Soyad S** U**
  • Mesajlar 72
  • Beğeniler 13 / 11
  • Ticaret 0, (%0)
İyi günler gene ben.

Şimdi yapmak istediğim olayı ben size etraflıca anlatayım siz yardımcı olmak isterseniz yazarsınız.
Benim bir anket sitem var. Bu ankete kullanılan oylar veri tabanına satır satır kayıt oluyor.
Örneğin herhangi bir ankete biri oy kullandığında "oylar" tablosuna oy kullanan kişinin bilgileri ve hangi ankete oy kullandıysa o anketin id si kayıt oluyor.
Şimdi benim amacım bu oylar tablosuna kayıt olan satırlarda örneğin ilk 50 satırda en çok hangi anketin id si varsa o anketi birinci sıraya, ikinci anketi ve üçüncü anketi çekmek istiyorum ama bir türlü beceremedim.
Elimdede şöyle mantıksız bir kod var.

$anketler = $mysqli->prepare("SELECT * FROM anketler WHERE gosterim='1' limit 5");
// anasayfaya anket çekme kriterleri.
$anketler->execute(array());
while($row=$anketler->fetch(PDO::FETCH_ASSOC))
{

$trend = $mysqli->prepare("SELECT anketno,COUNT(*) as sayac FROM 'oylar' GROUP BY anketno ORDER BY sayac DESC LIMIT 50");
// oylar tablosunda anket numarası en çok olan anketi bulma.
$trend->execute(array());
while($row=$trend->fetch(PDO::FETCH_ASSOC))
{


$soru = $row['anketsorusu'];
$no = $row['no'];
$kategori = $row['kategori'];
$oy1 = $row['oy1'];
$oy2 = $row['oy2'];
$oy3 = $row['oy3'];
$oy4 = $row['oy4'];
$oy5 = $row['oy5'];
$oy6 = $row['oy6'];

$t_oy = $oy1 + $oy2 + $oy3 + $oy4 + $oy5 + $oy6;

$anketsoru = strip_tags($soru) ;
$kisabaslik = mb_substr($anketsoru,0,40,'UTF-8');
?>


if ($kategori == Eğitim) {echo '';}
if ($kategori == Spor) {echo '';}
if ($kategori == Siyasi) {echo '';}
if ($kategori == Eğlence) {echo '';}
if ($kategori == Doğa) {echo '';}
if ($kategori == Ekonomi) {echo '';}
if ($kategori == Dünya) {echo '';}
if ($kategori == Teknoloji) {echo '';}
if ($kategori == Oyun) {echo '';}
if ($kategori == Diğer) {echo '';}
echo $trendanketler;
?>




}
}


Kısaca anlatmak gerekirse oylar tablosunun ilk 50 satırında en çok bulunan 5 anketin id sini alıp bu anketler tablosundan bu anketleri çekmem gerekiyor.
Yada bir alternatif fikriniz varsa çok iyi olur. Teşekkürler.
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al