Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Bir tablo üzerinden 3 farklı sorgu
#1
Mrb;

Bir tablo üzerinden üç sorgum var ve bu sorgunun tek listede görünmesi gerekiyor. Sorgu muhasebe kayıtlarını içeriyor.

Tablo özelliği ve alanları : MySQL
İşlem tarihi, belge türü (tahsilat,ödeme vb.) ,bankaad,cariad,gelirad,giderad,islemgrubu

select * from muhasebeislemler
where docdate >'19.09.2016'

and ( bankaad   = 'Akbank' 
     or bankaad = 'İşbank' )

and ( cariad    = 'Ahmet' 
     or cariad  = 'Yunus' )

and ( gelirad   = 'Kira Geliri'
     or gelirad = 'Peşin Satışlar')

Bu şekilde yaptığımda tüm andları kontrol ediyor ve tüm koşullara uyan kaydı getirmeye çalışıyor. Böyle kayıt yok doğal olarak. Banka işleminde banka filtresi uygun olan var cari hesaplarda cari hesap filtresi uygun olan var. Her bölümün kendisine uygun kayıtlarını nasıl getirebilirim. And yerine or kullandım alaksız olanlarda geldi bu sefer
Cevapla
#2
Her bir sorguyu ayri ayrı yazıp alt alta union all ile birleştirebilirsin, ya da her bir koşulu (bankaad, cariad, gelirad) parantez icinde and ile yan yana yazıp diger veri setini or ile başka bir parantez icine yazabilirsin ama ilki daha temiz görünecektir ayrıca mümkün mertebe sorgularda or kullanmaktan kacinmani tavsiye ederim
Cevapla
#3
Selam,
Sorgunuzda hata yok, burada sizden istenen önemli aslında, sizin sorgunuzda ahmet veya yunus un akbank veya işbank tan yapılan kira ve peşin satışlarını istiyorsunuz. Oda haliyle ne bulursa onu veriyor. Herbirine ayrı ayrı uyan kayıtları almak istersenizde mecburen or kullanıcaksınız. Dediğim gibi burada olay sizden neyin istendiğidir.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#4
Anladığım kadarıyla arkadaşın istediği şey şu: 
select * from muhasebeislemler
where 
	docdate >'19.09.2016' and 
	(
		(bankaad   = 'Akbank'  and cariad = 'Ahmet' and gelirad = 'Kira Geliri') or 
		(
			bankaad = 'İşbank' and cariad  = 'Yunus' and gelirad = 'Peşin Satışlar'
		)
	)

Ama performans problemleri yaşamamak adına bunu şu şekilde yazmasını tavsiye ederim: 

select * from muhasebeislemler
where 
	docdate >'19.09.2016' and 
	bankaad   = 'Akbank'  and cariad = 'Ahmet' and gelirad = 'Kira Geliri'
union all 
select * from muhasebeislemler
where 
	docdate >'19.09.2016' and 
	bankaad = 'İşbank' and cariad  = 'Yunus' and gelirad = 'Peşin Satışlar'
Cevapla
#5
Çok teşekkür ederim. Çalıştı.
Bir ihtiyaç oluştu tabi çalışınca. Bu şekilde sorguladıktan sonra banka adına ve cari adına göre başlık oluşturarak liste halinde yazdıracam
Örnek :

Akbank
------------------------------------------------------------------------------------
Tarih Belge Açıklama Yatırılan Çekilen
01.01.2016 Yatırılan Mevduat İşlemi 250
05.05.2016 Çekilen Ödemeler Nedeniyle 1.000

gibi.

Group by veya distinct çalışmıyor bu sorguda. Sorguda gelen belgeleri while döngüsü ile ekrana (gride) yazdırırken banka isimlerini de okutup başlık olarak yukarıdaki gibi nasıl yazıdrabilirim.
Cevapla
#6
Merhaba,
cxGrid kullanıyorsanız Sütunların gruplama özelliğini kullanabilirsiniz.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
Çözüm ve geliştirmeyi tamamladığım için artık yazabilirim. Union ile çalıştırdım. if (cariad <> '' ,'Var','Yok' ) as caridurum sorgu ekleyerek grubun olup olmadığına bakıp ekrana döngü ile yazdırdım. Rapor olarak hazırladığım için cxgrid gruplama özelliği esnek olmadı. Toplamlar vs çirkin görünüyordu. Bilgi veren herkese teşekkürlerimi sunarım
Cevapla
#8
Bu cümleni tekrar bir select ifadesi içerisine alarak gruplandırma yapabilirsiniz, 'select (sql cümleniz) group by cariad' gibi
Wink demokrasi de çareler tükenmez
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#9
Artık yaptım Smile Başka zamana. Yinede başkasına lazım olur diye örneklendirebilirsin.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Excelden den import sırasında mükerrer kaydı konrol edip farklı işlem yapma musdi42 1 151 14-11-2017, Saat: 12:21
Son Yorum: uparlayan
  [Çözüldü] HTTP üzerinden RTSP ile IP kamera stream işlemek Abdullah ILGAZ 2 369 18-08-2017, Saat: 15:59
Son Yorum: Abdullah ILGAZ
  kullanici sorgu hattası admin02 19 931 22-06-2017, Saat: 11:25
Son Yorum: Mericx
  Farklı tabloları bir Grid'te gösterme Mericx 6 364 04-06-2017, Saat: 15:25
Son Yorum: yhackup
  Object Pascal - 2 Farklı Fonksiyon Bildirimi İbrahim 1 343 14-01-2017, Saat: 07:25
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi