Doğru Cevap
-
bu firma_hit tablosunu kaldır ve bunu yükle
CREATE TABLE `firmahiti` ( `gun` varchar(80) NOT NULL, `ay` varchar(80) NOT NULL, `yil` varchar(80) NOT NULL, `id` int(11) NOT NULL auto_increment, `hit_sayisi` int(11) NOT NULL, `firma_id` int(11) NOT NULL, `ip` varchar(25) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
döngüye sokacağın sorgunda bu.$sorgu = mysql_query("SELECT firmalar. * , SUM( hit_sayisi ) AS TOPLAM FROM firmahiti RIGHT JOIN firmalar ON firmalar.id = firmahiti.`firma_id` GROUP BY firmalar.id ORDER BY toplam DESC LIMIT 10 ");
-
sharq
cevabın için teşekkür ederim ama senin bu verdiğin tabloda şimdi firmaya ben girdiğimde bnm ip'm kayıt edilecek sonra sen girdiğinde snn ip'ni kabul edecek ve hit sayisini 1 arttıracak sonra ben aynı günde senden snra girince snn ipni görecek beni bugun hiç görmemiş gibi yapacak ve ben aynı gün içinde 2 kere veri tabanına kayıt ettrmiş olacağım.10 yıl önce yazılmış -
ziyahan
Şunu dener misiniz?mysql_query("INSERT INTO firma_hit (firma_id,ip,gun,ay,yil) select '$firma','$ip','$gun','$ay','$yil' from firma_hit where not exist (select * from firma_hit where firma_id='$firma' and ip='$ip' and gun='$gun' and ay='$ay' and yil='$yil')");
10 yıl önce yazılmış -
sharq
sorun sorguda deil yani bu verdiğiniz kod galiba veritabanında hit sayfasında varmı yokmu diye sorgu yapıyor yoksa veri tabanına veri giriyor galiba yani bnm ypmak istediğim şey firma_hit tablosundaki firma_id değerlerivar mesela bugün 5 kişi aynı firmaya girmişşe
|id|firma_id|gun|ay|yil |ip |
|1 |2 |01 |03|2012|127.0.0.1|
|2 |2 |01 |03|2012|127.0.0.2|
|3 |2 |01 |03|2012|127.0.0.3|
|4 |2 |01 |03|2012|127.0.0.4|
|5 |3 |01 |03|2012|127.0.0.1|
|6 |4 |01 |03|2012|127.0.0.1|
|7 |4 |01 |03|2012|127.0.0.1|
Burda görüldüğü gibi bu gün içerisinde 2 id li firmaya 4 kere girilmiş
3id li firmaya 1 kere girilmiş 4 id li firmaya 2 kere girilmiş
ekranada çıktı olarak en fazla girilen 2id li olan sonra 4id li olan sonrada 3idli firmayı yazdıran sql kodu nedir yani yapamadığım olay bu diğerlerinde bi sorun yok.10 yıl önce yazılmış -
sharq
şimdi bu mantığı anladım sum ile firma_hit tablosundaki hit_sayisi'ni toplatıyoruz ve toplam'a eşitliyoruz sonrada right join ile firmahiti ve firmalar tablosunu birleştiriyoruz snra firmalar daki id eşitse firmahitindeki firma id'ye grup olşturuyoruz firmalarid diye ve bunu başta tanımladığımız toplam ı büyükten küçüğe yazıyoruz ama ben bunu çalıştırınca bi hata veriyor tablomu şu şekilde deyiştirdim.
CREATE TABLE `firma_hit` ( `id` int(10) NOT NULL auto_increment, `firma_id` varchar(10) NOT NULL, `gun` varchar(80) NOT NULL, `ay` varchar(80) NOT NULL, `yil` varchar(80) NOT NULL, `ip` varchar(80) NOT NULL, `hit` int(10) NOT NULL default '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
bu tabloya göre sql kodunu düzenleyip yazarmısın??10 yıl önce yazılmış -
sharq
SELECT firmalar.firmaadi, firmalar.id, firma_hit.firma_id, SUM( firma_hit.hit ) AS toplam FROM firma_hit INNER JOIN firmalar ON firmalar.id = firma_hit.firma_id GROUP BY firmalar.id ORDER BY toplam DESC LIMIT 10 ;
Böle Yapınca Buldu Teşekkürler.10 yıl önce yazılmış
-
Cevaplar
-
Merhaba;
Aşağıdaki gibi bir mantıkla yapabilirsiniz.
INSERT INTO `table` (value1, value2) SELECT 'stuff for value1', 'stuff for value2' FROM `table` WHERE NOT EXISTS (SELECT * FROM `table` WHERE value1='stuff for value1' AND value2='stuff for value2') LIMIT 1
Bunun dışında, REPLACE INTO, INSERT IGNORE INTO gibi yöntemlerden birini de kullanabilirsiniz.-
sharq
öncelikle cevabınız için teşekkrler ama pek birşey anlamadım ve gördüğüm kadarıyla INSERT ile neyi ekleteceğiz zaten ben firma_detay.php sayfasında sorgu yaptırdım eger varsa öle bişi yazdırdım isterseni o sorguyuda vereyim
firma_detay.php sayfasındaki hit sorgusu
$ip = $_SERVER['REMOTE_ADDR']; $gun = date("d"); $ay =date("m"); $yil = date("Y"); $hitsorgu = mysql_query("SELECT * FROM firma_hit WHERE firma_id='$firma' and ip='$ip' and gun='$gun' and ay='$ay' and yil='$yil'"); if(mysql_num_rows($hitsorgu)<1){ mysql_query("INSERT INTO firma_hit (firma_id,ip,gun,ay,yil) VALUES ('$firma','$ip','$gun','$ay','$yil')"); }
10 yıl önce yazılmış
-