Bi Sql Query İcin Fikir Lazim
-
veritabaninda id,tarih ve x diye uc sutunu olan bi tablo var
x-in soyle bi icerigi var ornegin 0,2,0,1,1,0,0,2,1,2,1,2,0,1,2 bu tablo icin oyle bi query yapmam gerek ki tarihe gore gruplayip o tarihteki tum x lerin iceriginde kac tane 2 oldugunu bulabilecek, firki olan varmi ? -
Bi dene bakalım hocam.
Select id,tarih,(select Count(*) from tabloadi where x = '2' AND t.id = id) AS XCount From TabloAdi t GroupBy tarih
Google tarafından 27/Mar/13 18:07 tarihinde düzenlenmiştir -
Google bunu yazdı
Bi dene bakalım hocam.
Select id,tarih,(select Count(*) from tabloadi where x = '2' AND t.id = id) AS XCount From TabloAdi t GroupBy tarih
hocam sorun su x in icerigi sadece 2 degil 1,2,1,2,0,0,1,1,2,2 gibi orneyin su ornekte x icin iceriginde 4 tane 2 var bide ayni tarihte baska row da olabilir onlarda da kac tane 2 oldugunu bulmam gerek
-
php için lazımsa ya da php ile düzenlesem de olur diyorsan , mysql_fetch_array olarak çek , array_count_values ile tekrar eden verileri say derim
-
Cradex bunu yazdı
php için lazımsa ya da php ile düzenlesem de olur diyorsan , mysql_fetch_array olarak çek , array_count_values ile tekrar eden verileri say derim
evet php icin lazim su array_count_values i su durum icin bi ornek verebilirmisin cunku x in icerigi php de string olarak geliyor
-
hocam direk sorguyla yapman birazcık zor. Sanırım procedure yazarak çözebilirsin.
-
önce tarihe göre sıralayıp çekiceksin daha sonra splitle ayırıp saydırman sanırım daha dogru olur.
-
Eğer tarihten kastın güne göre çekmekse ve tarihte saat falanda varsa önce gün ay yıl diye ayırıp bir string oluşturup ona göre gruplamak isteyebilirsin.
-
FCN bunu yazdı
önce tarihe göre sıralayıp çekiceksin daha sonra splitle ayırıp saydırman sanırım daha dogru olur.
bende basta oyle dusunmustum, daha iyi bi cozum varmi diye soriyim dedim aslinda tarihe gore bile siralasam da yine ise yaramaz direk php de bi 1 den 31 e kadar bi dongu yapip her bi gun icin ayri bi query alip her dongude hepsini birlesim sonra split yapip sayisini bulmak gerekiyor
-
geniuss bunu yazdıFCN bunu yazdı
önce tarihe göre sıralayıp çekiceksin daha sonra splitle ayırıp saydırman sanırım daha dogru olur.
bende basta oyle dusunmustum, daha iyi bi cozum varmi diye soriyim dedim aslinda tarihe gore bile siralasam da yine ise yaramaz direk php de bi 1 den 31 e kadar bi dongu yapip her bi gun icin ayri bi query alip her dongude hepsini birlesim sonra split yapip sayisini bulmak gerekiyor
hergün için ayrı query yapmanın bir anlamı yok. boşuna performans kaybı. tek seferde işlemini yapıp,gelen veri sayısı kadar bi döngü kurup içlerinde dönmen yeter. dönme esnasındada saydırma işlemini yaparsın.
-
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>1 den ve hello dan 2 tane var.
Array ( [1] => 2 [hello] => 2 [world] => 1 )