korasoglu Posted October 10, 2015 Share Posted October 10, 2015 Arkasaşlar select * from ile döngü olarak veriyi çektirip toplatıyorum. Araştırdım hesaplama sql yaptırılabiliyor fakat beceremedim. Örneğin SELECT SUM (aa) FROM deneme buradaki aa kolonunu topluyor ben yapamadım. Benim istediğim üç kolon var bunları toplatıp toplamlarını ayrı ayrı almak istiyorum. görme açısından bir kolonda olabilir nasıl yapabilirim. Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted October 10, 2015 Editor Share Posted October 10, 2015 (edited) SELECT SUM(kolon1) AS 'Kolon 1 Toplam', SUM(kolon2) AS 'Kolon2 Toplam', SUM(kolon3) AS 'Kolon 3 Toplam' FROM tablo Edited October 10, 2015 by pairs Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 10, 2015 Share Posted October 10, 2015 db, err = MySQLConnection:execute("SELECT SUM(sutun1) as 'Toplam' FROM tablo"); tVeri = db:fetch({}, "a"); Dialog.Message("", tVeri.Toplam); bu şekilde olması lazımdı. Quote Link to comment Share on other sites More sharing options...
korasoglu Posted October 11, 2015 Author Share Posted October 11, 2015 (edited) sevgili kintaro ve pairs bir tane denedim evet böyle topladı. Ben veri tabanını navicatla yapıyorum şu şekilde yapsam kodla fark ne olur. CREATE TABLE deneme(siparis_no int identity(1,1) primary key not null ,kisi_id int not null foreign key references musteri(kisi_id) ,tarih datetime default getdate(),adresi varchar(100)) Edited October 11, 2015 by korasoglu Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 11, 2015 Share Posted October 11, 2015 bu verdiğin, kodla tablo oluşturmak için, konuyla bi alakası yok gibi? Quote Link to comment Share on other sites More sharing options...
korasoglu Posted October 11, 2015 Author Share Posted October 11, 2015 evet konu açmak yerine burada sormak istemiştim hepsi bu. Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 11, 2015 Share Posted October 11, 2015 ben aynı konudan bahsediyorsunuz zannettim. ikisi arasında bir fark yok. Quote Link to comment Share on other sites More sharing options...
korasoglu Posted October 12, 2015 Author Share Posted October 12, 2015 Hocam gerekli bilgileri aldım tşk ederim. Veri tabanındaki kayıt sayısını sorguluyorum SELECT COUNT(column_name) FROM table_name; kayıt varsa sorun yok kayıt yoksa hata veriyor nasıl yaparımda hiç kayıt olmadığını öğrenebilirim. dönüşüm sıfır birmi oluyor. Yukarıdaki örnek harika onda da aynı kayıt varsa topluyor yoksa hata veriyor. Quote Link to comment Share on other sites More sharing options...
korasoglu Posted October 13, 2015 Author Share Posted October 13, 2015 Hayirlı günler SELECT *, SUM(borc), Sum(tahsilat) FROM satis Group by turu ORDER by 'reklam' desc bu sorgunun toplamlarını nasıl değişkene atayabilirim. Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 13, 2015 Share Posted October 13, 2015 Hocam gerekli bilgileri aldım tşk ederim. Veri tabanındaki kayıt sayısını sorguluyorum SELECT COUNT(column_name) FROM table_name; kayıt varsa sorun yok kayıt yoksa hata veriyor nasıl yaparımda hiç kayıt olmadığını öğrenebilirim. dönüşüm sıfır birmi oluyor. Yukarıdaki örnek harika onda da aynı kayıt varsa topluyor yoksa hata veriyor. eğer hiç kayıt yoksa 0 döner, aşağıdaki gibi alabilirsiniz: Hayirlı günler SELECT *, SUM(borc), Sum(tahsilat) FROM satis Group by turu ORDER by 'reklam' desc bu sorgunun toplamlarını nasıl değişkene atayabilirim. db, err = MySQLConnection:execute("SELECT SUM(sutun1) as 'Toplam1', SUM(sutun2) as 'Toplam2' FROM tablo"); tVeri = db:fetch({}, "a"); Dialog.Message("", tVeri.Toplam1 .. " - " .. tVeri.Toplam2); Quote Link to comment Share on other sites More sharing options...
korasoglu Posted October 24, 2015 Author Share Posted October 24, 2015 (edited) Hocam buradan devam etmek istedim aldığım hata aynı çalışmada olduğu için. hiç bir sorun yokken şimdi bu hatayı alıyorum google de araştırdım türkçe bir şey bulamadım anlamdım sizce bu hata ne olabilir. luasql: unrecognized token Edit = hatalı karakter kullanmışım hata ondan kaynaklanıyormuş (') Edited October 25, 2015 by korasoglu Quote Link to comment Share on other sites More sharing options...
korasoglu Posted October 25, 2015 Author Share Posted October 25, 2015 (edited) Hocam tabloda uyan kayıt varsa sorun yoksa eğer yoksa hata alıyorum bunu nasıl çözebilirim. SQLite3Connection, err = SQLite3Connection:execute("SELECT * FROM kisi WHERE firma LIKE '%" .. kim .. "%' AND ay LIKE '%" .. ay .. "%' AND yil LIKE '%" .. yil .. "%'"); if SQLite3Connection ~= nil then local adi = SQLite3Connection:fetch({}, "a") if adi ~= nil then burada adi dan hiç bir değer donmuyor boş veya sıfır dönse çözümü kolay hiç bir değer dönmüyor. Yardımcı olursanız sevinirim. Edited October 25, 2015 by korasoglu Quote Link to comment Share on other sites More sharing options...
Xerkan Posted October 25, 2015 Share Posted October 25, 2015 kullandığın SQL sorgusunda ay ve yil alanları eğer INTEGER ise ,ben öyle olduğunu tahmin ediyorum bu durumda LIKE operatörü görev yapmaz ,hernekadar SQLite diğer veri tabanı sistemlerine göre çok katı veri tipi karşılaştırması yapmasada yinede bu işlem pek uygun değil LIKE operatörü string veri tipi için kullanılır zaten '' işaretleride bu yüzden vardır ve bir sorguda birden çok kullanılması çok bekleneni karşılamaz, zaten bu ay ve yil alanları birer sayı tuttuğuna göre karşılaştırmada binary operatörleri ile yapılmalı örneğin : "SELECT * FROM kisi WHERE firma LIKE '%" .. kim .. "%' AND ay = " .. ay .. " AND yil = " .. yil .. ";" ama ben illa bu şekilde yapacam dersen o durumda CAST operatörünüde kullanmalısın buna ek olarak % magic karakterini her iki tarafta kullanmakta beklenmedik sonuçlar döndürebilir ,genellikle sadece solda olması daha mantıklıdır ,bu şekilde kim değişkeninde ke var ise tablodan kenan,kemal,kerim gibi isimler döner ama iki tarafta olması halinde mesela melike isminide döndürür eğer tam ne yapmak istediğini ,tablo yapısı ile belirtirsen , daha detaylı örnek gösterebilirim Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 25, 2015 Share Posted October 25, 2015 arkadaşlar buradaki sorun sadece AND kullanması. AND yerine OR kullanırsa tahminimce sorun çözülür. Tabii ki sorguda bu kadar çok LIKE kullanması büyük veritabanlarında performans düşüşüne neden olacaktır. Quote Link to comment Share on other sites More sharing options...
Xerkan Posted October 25, 2015 Share Posted October 25, 2015 pek sanmıyorum ,çünki OR kullanıldığında 3 değişkenden herhangi birisi tuttuğunda o result-set e eklenir yani ,kim,ay,yil değişkenlerinden herhangi birisi kısmen bile uyuşma sağlasa geçerli kabul edilir buda mantıksız bir sonuç çıkarır tabiki burada sorgudaki amaç önemli , ve tam olarak ne yapılmak istendiği açık değil örneğin ben 3 tane input nesnesinin birine isim,birine ay (sayı olarak) ,ve diğerinede yıl (sayı olarak) gireceksem sonuç olarak ,ay ve yıl sayıları belirli olduğuna göre ,ben bu ay ve yıl değerleri içinde kim değişkenine girdiğim veri ile uyuşan sonuçlara bakarım ama tabiki mesela sadece yil değişkeni doldurulup diğerleri boş olarak sadece yıl bazında sorguda düşünülebilir ama bunu yapmanın yoluda LIKE değildir tabiki son olarak ,SQLite veri tipleri konusunda diğerleri gibi katı değil mesela INTEGER olarak tanımladığın bir alana string ekliyebilirsin veya sınırlayıcı belirlediğin bir alana sınırın üzerinde veri ekliyebilirsin ve bunun gibi bir sürü olasılık var sonuç olarak belki LIKE operatörü INTEGER alan üzerinde çalışabilir belki , çünki auto CAST olayı var ama yinede bu sorgu her haliyle yanlış Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 25, 2015 Share Posted October 25, 2015 aa evet sutun başlıklarına dikkat etmemiştim. Aynen usta haklısın. İzlenen yol yanlış. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.