Pluton Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 Burda çok şey öğrendim riglous'da çok yardım etti sağolsun şimdi yeni bir soru ile karşınızdayım =) Şimdi istatistikler yapıcam ama tek tek bütün tabloları query yapmak hiç mantıklı gelmiyor. SELECt COUNT(userid) as users,COUNT(articleid) as articles FROM users,articles Olarak yaptıgımda alamıyorum son yazdıgımın rakamını veriyor. Bunu tek SQL sorgusunda nasıl yaparım ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
razzRaziel Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 virgül yerine boşluk bıraksan diye sıkmak istiyorum Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Nisan 26, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 26, 2010 yok normalde mesela şöle; SELECT users.username,articles.articlename FROM users,articles WHERE users.userid = articles.author olarak alıyordum mesela yada outer join ile falan alıyorum ama bunda yemedi :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 SELECT COUNT(userid) as users, (SELECT COUNT(articleid) as articles FROM articles) FROM users Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 count, avg vb. kullaniminda GROUP BY da kullanilmasi gerekiyordu yanlis hatirlamiyorsam. oyle dene bi bakalim. edit: yanlis hatirliyor da olabilirim Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Nisan 26, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 26, 2010 @Mum Seninki olmadı ya ilk count'u sayıyor makaleleri saymıyor @sigisMoNd Bi deneyeyeim :( malesef olmadı Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Nisan 26, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 26, 2010 SELECT COUNT(DISTINCT users.userid) as total_user,COUNT(DISTINCT articles.articleid) as total_article FROM users,articles Bu şekilde oluyor;) http://forums.devarticles.com/general-sql-development-47/count-over-two-tables-1849.html Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 ben bir wordpress veritabaninda deniyorum, mysql 5 asagidaki query calisiyor SELECT COUNT(*) as users, (SELECT COUNT(*) as articles FROM wp_links) as links, (SELECT COUNT(*) as articles FROM wp_posts) as posts FROM wp_users Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 Bir tek Pluton'a yollayacaktim ama dayanamadim. Bakin SQL konusmak gibi bir dil. Sen soru soruyorsun, o sana cevap veriyor. Sacma bir soru sorarsan, sacma bir cevap alirsin. Soru sormayi bilmiyorsan (virgul'den sonra bosluk birakmak gibi) alacagin cevabin senin sorunun cevabi olma ihtimali pek de mumkun degil. -how many siblings do you have? -[izmir|ankara|35|hasan|ahmet|2] sec begen al. Suraya acilan bilimum SQL sorularinda nolur suna bir dikkat edin. Ikinci yakarisimsa "tek sorgu" muhabbetinize hastayim. Hani "tek sorgu" olsun da dunya turu atsin, yine razisiniz. Komik oluyor gercekten. Birbiriyle alakasiz iki tabloya cross-join yaptirip sonra coklamasini gayet normal karsilayaraktan distinct kullanmaniz... Ben kelime bulamadim aciklayacak. 1m kayit olan iki tablon var. Sonra bunlara cross-join yaptirdin, 1m*1m kayit yarattirmis oldun. Sonra bunlarin distinct olacak sekilde saydirdin. Aferim. Yaptigin seyin sacmaligini gectim, server'a yuk olmandan dolayi anlasmayi bozabilirler bile. Birbiriyle alakasiz iki tablodan count aliyorsan illaki union all ile birlestirmen gerekiyor. select 'table1' src, count(*) cnt from table1 union all select 'table2' src, count(*) cnt from table2 Bunun disinda "group by" dediginiz sey herhangi bir eleman bazinda aggregation yaptiginda kullanacagin bir sey. Mesela users tablosunda kisilerin hangi ilde yasadiklarini tutuyorsundur. Sonra "group by"a sehir kolonunu koyarsin, boylece sana sehir kiriliminda count verir. Tablodaki tum kayit sayisini ogrenmeye calisan birisine "group by" kullanmalisin demek gercekten sacma. Bana vakti zamaninda bu forumda verilen bir tavsiye vardi. "Illaki cevap vermek zorunda degilsin" demisti birisi. Ben bir adim oteye tasimak istiyorum; bilmiyorsaniz, sacmalamak zorunda degilsiniz. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Nisan 26, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 26, 2010 yorumun için teşekkür riglous, ama şu var ki sorgu benim eserim değil sölemek istediğini anladım bunun için çok teşekkür ederim. Tek sorgu olayında ise öyle bir çabam yok ama şu şekilde oluyor mesela; $q = mysql_query("SELECT COUNT(userid) as users FROM users"); $q2 = mysql_query("SELECT COUNT(aid) as articles FROM articles"); $q = mysql_fetch_assoc($q); $q2 = mysql_fetch_assoc($q2); echo $q.'-'.$q2; Mesela birde 6 tablo olucak bu şekilde olmasından ziyade tek sorguda hepsini alabilirsem daha iyi olur diye düşünmüştüm ben ama Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 E tamam o zaman alakasiz tablolari union all ile birlestir.. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Nisan 26, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 26, 2010 Aynen o şekilde değiştirdim ama ilk tablonun sayısını alıp diğerini almıyor bu seferde select 'users' src, count(*) as total_user from users union all select 'articles' src, count(*) as total_article from articles Mesela burda sadece total_user doğru, total_article 'yi 0 alıyor Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 pluton, riglous sarkastik bir cevap vermis. union ya da join kullanma basit sayma islemleri icin. ille birsey kullanacaksan subquery kullan. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 Sarkastik degildi. Ben de karistirmisim, UNION kullan. subquery kullanmak mantikli degil Mum. Zira senin yazdiginda, her bir kayit icin o subquery'i calistirir. 1000000 defa count alir yani. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Nisan 26, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 26, 2010 union'uda denedim ama ondada aynı ilk seferde denemiştim select 'users' src, COUNT(*) as total_user from users union select 'articles' src, COUNT(*) as total_article from articles Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 Kendimi de sasirttiniz bana ha. create database tmp; create table tmp.users(col1 integer); create table tmp.articles(col1 integer); insert into tmp.users(col1) values (1); insert into tmp.users(col1) values (2); insert into tmp.articles(col1) values (1); --users: 2, articles: 1 select count(*) from tmp.users; select count(*) from tmp.articles; select 'users' src, count(*) cnt from tmp.users union all select 'articles' src, count(*) cnt from tmp.articles; --EUREKA! Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 riglous said: subquery kullanmak mantikli degil Mum. Zira senin yazdiginda, her bir kayit icin o subquery'i calistirir. 1000000 defa count alir yani. mysql subquery yapisinda teorik bir bilgim yok ama sql'in standart islem mantigini takip ediyorsa her kayit icin almamasi, degisken gibi calismasi lazim. once subquery'yi calistirip onun sonucunu ana query'ye iletmeli. yani bu durumda iki tane query'yi tek seferde calistirmasi lazim. ama teoride. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 Pluton said: yorumun için teşekkür riglous, ama şu var ki sorgu benim eserim değil sölemek istediğini anladım bunun için çok teşekkür ederim. Tek sorgu olayında ise öyle bir çabam yok ama şu şekilde oluyor mesela; $q = mysql_query("SELECT COUNT(userid) as users FROM users"); $q2 = mysql_query("SELECT COUNT(aid) as articles FROM articles"); $q = mysql_fetch_assoc($q); $q2 = mysql_fetch_assoc($q2); echo $q.'-'.$q2; Mesela birde 6 tablo olucak bu şekilde olmasından ziyade tek sorguda hepsini alabilirsem daha iyi olur diye düşünmüştüm ben ama Hala duzgun bi db class'i kullanmiyorsan su dakika at kendini buldugun en yuksek yerden. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Nisan 26, 2010 Paylaş Mesaj tarihi: Nisan 26, 2010 Bu arada canlidaki bir sitenin 100 mb'lik haber DB'inde su subquery vs union olayini denedim ama her ikisi de 0.00 saniyede geri dondu. Daha buyuk bir DB'de fark yaratir belki. Performans olayinda da 'IN' anahtar kelimesi ile ilgili sorunlar var sanirim sadece. Onun disinda birsey goremedim ben. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
mightee Mesaj tarihi: Nisan 27, 2010 Paylaş Mesaj tarihi: Nisan 27, 2010 subquery kullanmanın performansı düşürdüğünü çok yerde okumuştum fakat test edecek kadar büyük bir db elime geçmedi. ayrıca sql sorgusu çalışıyor. tablolarda veri olduğundan emin misin ? :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Pluton Mesaj tarihi: Nisan 27, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 27, 2010 di said: Pluton said: yorumun için teşekkür riglous, ama şu var ki sorgu benim eserim değil sölemek istediğini anladım bunun için çok teşekkür ederim. Tek sorgu olayında ise öyle bir çabam yok ama şu şekilde oluyor mesela; $q = mysql_query("SELECT COUNT(userid) as users FROM users"); $q2 = mysql_query("SELECT COUNT(aid) as articles FROM articles"); $q = mysql_fetch_assoc($q); $q2 = mysql_fetch_assoc($q2); echo $q.'-'.$q2; Mesela birde 6 tablo olucak bu şekilde olmasından ziyade tek sorguda hepsini alabilirsem daha iyi olur diye düşünmüştüm ben ama Hala duzgun bi db class'i kullanmiyorsan su dakika at kendini buldugun en yuksek yerden. Ben misal dedim zaten Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar