kolya gelsin arkadaşlar anlamsız bulduğum bir sorunum daha var gerçi herşeyin bir anlamı vardır ama ben veremedim
query de farklı iki tablodan kayıtları alıp göstermem gerekiyor
union birleştirme yapıyor ve tekrarlanan kayıtları sadece bir kere gösteriyor union all kullanıldığında ise tekrarlanan kayıtlarda tekrar gösteriliyor
query deki SQL cümlesi şu
*****************
select baglac,irsaliye_turu,irsaliye_tarihi,s_kodu,stok_aciklamasi,stok_miktari,ozel_kod from irsalisd
union all
select baglac,irsaliye_turu,irsaliye_tarihi,s_kodu,stok_aciklamasi,stok_miktari,ozel_kod from irsatisd
order by s_kodu
************
burda amacım giriş ve çıkış irsaliyerini queryde toplamak ve irsaliye türününe bakarak
tarihi türü stok kodu stok açıklaması giriş çıkış
12.10.2001 Aİ 9504.08 troy bej 10 0
13.10.2001 Sİ 9504.08 troy bej 0 3
gibisinden bir rapor verdiriyorum raporu veriyor ancak bazı irsaliyeleri göz ardı ediyor rapora verdiğimin aynısını dbgrid verip manuel sorgulama yaptırıyorum mesala raporda görünmeyen irsaliyenin yada stok kodunun sorgulamasını yaptırıyorum vermiyor irsaliyeyi inceliyorum bir sorun yok
faklı mantık kullandığım başk raporlarda aynı irsaliye yada stoğu görüntülüyor mesala iki tarih arasındaki irsaliye dökümü ver siyorum detayları ile veriyor sorun yok
sanırım sorun yukarıda ki SQl cümlesinde yardım edebilirmisiniz
query de vermesi gereken verilmiyor
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Merhaba,
hocam lütfen alışkanlık olarak, veritabanı ile ilgili bir soru sorduğumuz zaman hangi veritabanı kullanıyorsak onu da yazalım. Değişik kullanımlar olabilir.
Forum kuralları ve mesaj atmadan önce okuyunuz başlıklı yazıyı tekrar okuyalım lütfen.
Sorunuza gelince herhangi bir problem gözükmüyor. Sondaki order by'ı bir kaldırıp deneyin.
Bir de bu tip ifadeleri önce kullandığınız veritabanının (biz bilmiyoruz şu anda???) gerekli aracında dneeyerek istediğiniz sonucu elde edin, sonra Query'e aktarın.
Kolay gelsin.
hocam lütfen alışkanlık olarak, veritabanı ile ilgili bir soru sorduğumuz zaman hangi veritabanı kullanıyorsak onu da yazalım. Değişik kullanımlar olabilir.
Forum kuralları ve mesaj atmadan önce okuyunuz başlıklı yazıyı tekrar okuyalım lütfen.
Sorunuza gelince herhangi bir problem gözükmüyor. Sondaki order by'ı bir kaldırıp deneyin.
Bir de bu tip ifadeleri önce kullandığınız veritabanının (biz bilmiyoruz şu anda???) gerekli aracında dneeyerek istediğiniz sonucu elde edin, sonra Query'e aktarın.
Kolay gelsin.
SQL cumlenizde bir sorun yok gibi. Zaten bir kosul belirtilmemis. Yani bir kayit kisitlamasi yok. Bu cumleyi veya genel olarak yazdiginiz SQL cumlelerini SQL Explorer veya varsa kullandiginiz veritabaninin ilgili araci icinden calistirarak sonclarini incelerseniz daha iyi olur. Eger orada bir sorun yoksa raporu olusturma sirayinda bir hata olabilir. Yazdiginiz bir kod bazi kayitlari filtreliyor olabilir belki veya baska bir sorun. Ama en azindan sorunun Delphi tarafindan mi yoksa veritabani tarafindan mi kaynaklandigindan emin olarak sorunu lokalize edebilmis olursunuz.
öncelikle Acil yazdığım için özür dilerim siz saydı değer kişilerden emin olun ki bazen karşılaştığım sorunlar okadar acil oluyorki (gerçekten )
dikkat edilmesi gereken hususlara dikkat edip edtmediğimi bile fark etmiyorum ve kullandığım veri tabanı paradox herhangi filtrelem yapmıyorum direk sorgu sonuçlarına dayanarak reportta gerekli yerlere yazılmasını sağlıyorum ama bu raporda böyle bir durum gösterilmeyen bütün irsaliye kayıtlarını inceledim hiç birinin bir sorunu yok ayrıca ordey by ı kaldırdım değişen bir şey yok peki sizce kullanabilceğim başkaca bir SQL cümleciği olabilirmi
dediğim gib amacım hemen hemen her yönüyle aynı olan iki dosya birinin
aynısı (sadece birininfazlası var sadece ve SQL cümleciğinde bu fazlalıklar yer almıyor ki zaten yer alamıyor union kullandığım için seçilen alanların eşit olması söz konusu)
bir dosyada stok kodu miktarı hangi tarihte alındığı kaç adet alındığı hangi cariden alındığı bir diğerinde ise stok kodu miktarı hangi tarihte çıkış yapıldığı kaç adet çıkış yapıldığı ve hangi cariye çıktığı bilgileri var ve bunları raporlama ekranında daha önce yazdığım şekilde rapor vermek istiyorum bu anlatabildiysem anlattıklarım dahilinde böyle bir raporlama için nasıl bir kod yazarsınız yada query de neler yaparsınız yardımcı olabilirmisiniz teşekkür ederim
dikkat edilmesi gereken hususlara dikkat edip edtmediğimi bile fark etmiyorum ve kullandığım veri tabanı paradox herhangi filtrelem yapmıyorum direk sorgu sonuçlarına dayanarak reportta gerekli yerlere yazılmasını sağlıyorum ama bu raporda böyle bir durum gösterilmeyen bütün irsaliye kayıtlarını inceledim hiç birinin bir sorunu yok ayrıca ordey by ı kaldırdım değişen bir şey yok peki sizce kullanabilceğim başkaca bir SQL cümleciği olabilirmi
dediğim gib amacım hemen hemen her yönüyle aynı olan iki dosya birinin
aynısı (sadece birininfazlası var sadece ve SQL cümleciğinde bu fazlalıklar yer almıyor ki zaten yer alamıyor union kullandığım için seçilen alanların eşit olması söz konusu)
bir dosyada stok kodu miktarı hangi tarihte alındığı kaç adet alındığı hangi cariden alındığı bir diğerinde ise stok kodu miktarı hangi tarihte çıkış yapıldığı kaç adet çıkış yapıldığı ve hangi cariye çıktığı bilgileri var ve bunları raporlama ekranında daha önce yazdığım şekilde rapor vermek istiyorum bu anlatabildiysem anlattıklarım dahilinde böyle bir raporlama için nasıl bir kod yazarsınız yada query de neler yaparsınız yardımcı olabilirmisiniz teşekkür ederim
Bence sorunun SQL cumlesinden kaynaklanip kaynaklanmadigindan emin olmanin tek yolu bu cumleyi SQL explorer uezrinden calistirarak sonucu gormek. Cunku anlattiklarinizdan hareketle baska bir SQL cumle onerisi yapma durumu yok. ancak SQl Explorer'da calisan sonuclar isinizi gormuyorsa o zaman detayli izah ederseniz farkli SQL cumlesi onerme imkanimiz olabilir.
Farkli raporda gorunup bunda gorunmemesini de yien her iki cumleyi de SQL Explorer uyerinde deneyerek farkliliklarini ve sonuc farklarini analiy edebilirsiniz.
Farkli raporda gorunup bunda gorunmemesini de yien her iki cumleyi de SQL Explorer uyerinde deneyerek farkliliklarini ve sonuc farklarini analiy edebilirsiniz.
Fahrettin abi söyle bir denemede bulundum querynin yapması gerekeni ben yaptım
yani farklı iki dosyayı query de olması gerektiği gibi işleyip başka bir data ya aktarıp raporda gösterilecek data bu dedim sorun çıkmadı dah öncekinde görülmesi gerekipte görüntülenmeyenler aynen mevcut ama gelip görün ki query i yapmıyor bunu bundan ne sonuş çıkar hocam
yani farklı iki dosyayı query de olması gerektiği gibi işleyip başka bir data ya aktarıp raporda gösterilecek data bu dedim sorun çıkmadı dah öncekinde görülmesi gerekipte görüntülenmeyenler aynen mevcut ama gelip görün ki query i yapmıyor bunu bundan ne sonuş çıkar hocam
Öncelikle UNION, UNION ALL konusunda SQL alanında hem performans açısından hem de işleme biçimi bakımından tartışmalar olduğunu okumuştum.
Ben başka bir öneride bulunacağım. Genel bir tutum olarak, sonuç raporlarına en yakın tablo yapısını tutmak, bir çok alanda hatalardan korunmayı ve yüksek performansı sağlıyor. Çok sık düşülen bir hata da, özellikle küçük ve hiç bir zaman büyümeyecek veri tabanları için aşırı ayrıştırılmış tablo yapısı kullanmak oluyor. Veri tabanı memory sınırlarının 1/10 civarında kalıyorsa, tüm performans yaklaşımlarını ikinci dereceden ele alıp, tutarlılık ve kolay kullanımı ön plana alabilirsiniz. Bugünlerde 256 MB sıradan bir memory için 25 MB lik ver tabanları neredeyse tamamen memoryde çalışırlar ve özel bir dikkat gerektirmezler. Özelllikle STORED PROCEDURE kullanımı en etkin farkı sağlar. Kabaca,disklerde MP3 leri izlediğimizde, veri tabanı kullanım alanını daha güncel kavramak mümkün olur. Bütün bu yazdıklarım, database normalizasyon kurallarının ihmali anlamına gelmiyor. Ama 10 byte surdan, 20 byte falanca yerden toplamda 100 k kazandık gibi alanlar, aslında sağladıkları faydadan çok daha fazla zarar doğurabilirler.
Böyle uzun bir aşılama yazısından sonra basitçe önerimi aktarmak istiyorum. İki tablonun yapısını birleştirebilirsiniz. Girenleri GIRIS kolonuna, çıkanları CIKIS kolonuna yazabilirsiniz. Her satırda bu iki alandan biri boş kalıyor ama tüm sorgular hem çok kolaylaşır hem de çok yüksek hızla çalışır. Özellikle SQL sorgularında kartezyen çarpım sonucunun elemeye tabi tutulduğunu gözönünde bulundurursak, hızın 2. dereceden bir fonksiyon olarak değişmekte olduğunu hemen görürüz.
Bu tablo yapısı veri tabanınınzdaki bir çok sorguyu çok basitleştirebilir.
Ben başka bir öneride bulunacağım. Genel bir tutum olarak, sonuç raporlarına en yakın tablo yapısını tutmak, bir çok alanda hatalardan korunmayı ve yüksek performansı sağlıyor. Çok sık düşülen bir hata da, özellikle küçük ve hiç bir zaman büyümeyecek veri tabanları için aşırı ayrıştırılmış tablo yapısı kullanmak oluyor. Veri tabanı memory sınırlarının 1/10 civarında kalıyorsa, tüm performans yaklaşımlarını ikinci dereceden ele alıp, tutarlılık ve kolay kullanımı ön plana alabilirsiniz. Bugünlerde 256 MB sıradan bir memory için 25 MB lik ver tabanları neredeyse tamamen memoryde çalışırlar ve özel bir dikkat gerektirmezler. Özelllikle STORED PROCEDURE kullanımı en etkin farkı sağlar. Kabaca,disklerde MP3 leri izlediğimizde, veri tabanı kullanım alanını daha güncel kavramak mümkün olur. Bütün bu yazdıklarım, database normalizasyon kurallarının ihmali anlamına gelmiyor. Ama 10 byte surdan, 20 byte falanca yerden toplamda 100 k kazandık gibi alanlar, aslında sağladıkları faydadan çok daha fazla zarar doğurabilirler.
Böyle uzun bir aşılama yazısından sonra basitçe önerimi aktarmak istiyorum. İki tablonun yapısını birleştirebilirsiniz. Girenleri GIRIS kolonuna, çıkanları CIKIS kolonuna yazabilirsiniz. Her satırda bu iki alandan biri boş kalıyor ama tüm sorgular hem çok kolaylaşır hem de çok yüksek hızla çalışır. Özellikle SQL sorgularında kartezyen çarpım sonucunun elemeye tabi tutulduğunu gözönünde bulundurursak, hızın 2. dereceden bir fonksiyon olarak değişmekte olduğunu hemen görürüz.
Bu tablo yapısı veri tabanınınzdaki bir çok sorguyu çok basitleştirebilir.
Teşşekkür ederim bende sizden farklı düşünmedim zaten çoktan söylemiş olduğunuz yaptım bile çünkü çok uğraştım emin olun en ufak problemde hemen buraya yazmıyorum önemli olan sorunu çözmek değilmi çözmeye çalışıyorum olmayınca buraya yazıyorum burdanda çözüme ulaşamazsam alternatifine başlıyorum ve şu an öyle yaptım madem var niye kullanmayalım diye ısrar ettik ama olmadı tek çare querynin yapacağını kendim yaptım madem öyle birazda filtreleme desteği daha gizel oldu ama maksat fazla dosya ile uğraşmadan dallandırmadan yapmak idi kısmet değilmiş yine teşşekür ederim hayırlı çalışmalar