SQL YARDIM

Gönderen Konu: SQL YARDIM  (Okunma sayısı 1796 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı aahmetkurtt

  • Logo Kullanıcısı
  • **
  • Karma: 2
SQL YARDIM
« : 15.01.2007, 09:14 »
SELECT LG_001_CLCARD.DEFINITION_,LG_001_02_INVOICE.NETTOTAL,MAX(LG_001_02_INVOICE.DATE_) FROM LG_001_CLCARD,LG_001_02_INVOICE WHERE LG_001_CLCARD.LOGICALREF=LG_001_02_INVOICE.CLIENTREF AND LG_001_02_INVOICE.TRCODE=8 GROUP BY LG_001_CLCARD.DEFINITION_,LG_001_02_INVOICE.NETTOTAL,LG_001_02_INVOICE.DATE_ ORDER BY LG_001_CLCARD.DEFINITION_ ,LG_001_02_INVOICE.DATE_

yukardaki sql sorgusunda fatura tarihi MAX kullanarak bir cari hesaba yapılan son satış faturasını
tarih ve tutarıyla birlikte görmek istedim olmadı sorgudan LG_001_02_INVOICE.NETTOTAL
çıkartığımda sorgu çalışıyor ama nettotal eklendiğinde cari hesabın tüm satış faturalarını veriyor.
şimdi ben yukardaki sorguda nasıl yapmalıyımda carihesabın son satış faturasını tarihini ve fatura tutarını birlikte göreyim

Çevrimdışı admin

  • Uzman Kullanıcı
  • Logo Uzmanı
  • *****
  • Karma: 98
Ynt: SQL YARDIM
« Yanıtla #1 : 17.01.2007, 13:48 »
SELECT LG_001_CLCARD.DEFINITION_,LG_001_02_INVOICE.NETTOTAL,MAX(LG_001_02_INVOICE.DATE_) FROM LG_001_CLCARD,LG_001_02_INVOICE WHERE LG_001_CLCARD.LOGICALREF=LG_001_02_INVOICE.CLIENTREF AND LG_001_02_INVOICE.TRCODE=8 GROUP BY LG_001_CLCARD.DEFINITION_,LG_001_02_INVOICE.NETTOTAL,LG_001_02_INVOICE.DATE_ ORDER BY LG_001_CLCARD.DEFINITION_ ,LG_001_02_INVOICE.DATE_

yukardaki sql sorgusunda fatura tarihi MAX kullanarak bir cari hesaba yapılan son satış faturasını
tarih ve tutarıyla birlikte görmek istedim olmadı sorgudan LG_001_02_INVOICE.NETTOTAL
çıkartığımda sorgu çalışıyor ama nettotal eklendiğinde cari hesabın tüm satış faturalarını veriyor.
şimdi ben yukardaki sorguda nasıl yapmalıyımda carihesabın son satış faturasını tarihini ve fatura tutarını birlikte göreyim

Merhaba,

Çalıştırdığın sorgu doğru yaptığı işlemde doğru :) sorguyu incelersen date bölümünü en yüksek olanı nı al demişsin tamam burası doğru ama max max bölümü alttaki gruplamayı dikkate alır yani aşağıdaki group by a göre aynı olanları gruplama yapar burasıda güzel ama a carisini 2 faturası var iki ayrı tarih bu bilgilere göre a carisini fatura tarihi max olana göre gruplar, eğer buraya nettotal i de eklersen önce cari sonra nettotali aynı olanları gruplar ama ne yazık ki nettotal aynı olmadığı için her faturayı ayrı ayrı verir. Biraz karışık oldu ama bunun açıklaması bu şekilde umarım anlaşılır olmuştur. sizin istediğiniz için ince faturaları alacaksınız logicalref ile onları gruplayıp bir rapor yapacaksınız daha sonra ikinci bir raporda bir önceki raporu kullanarak ikinci raporu fiyatlı olarak çalıştıracaksınız. yani arkada ilke rapor son faturayı bulacak ikinci raporda bunu fiyatlandıracak :) iş bu kadar basit aslında :) kolay gelsin

Çevrimdışı Erdoğan

  • Logo Sistem Administrator
  • Logo Uzmanı
  • *****
  • Karma: 27
  • Bilgi Paylaşıldıkca Değer Kazanır.
Ynt: SQL YARDIM
« Yanıtla #2 : 18.01.2007, 02:04 »
Selamlar
  • Sadece son fatura yı almak istiyorsanız select top 1 yazarak order by kolon ismi desc yaparsanız son kayıtı alabilirsiniz.
  • Fakat birden çok kaydın örneğin her carinin son hareketini listelemek istiyorsanız. Sql2005 te ntile komutunu kullanabilirsiniz.
  • birde adminin söylediği gibi iki rapor oluşturup birinciyi ikinciye bağlayabilirsiniz.

     ilave olarak bir  kaç yöntem deneyebilirsiniz..
    1- birinci sorgu için bir view oluşturun ikinci sorgunuz bu view i çağırarak işlem yapsın.
    2- bir cursor yardımıyla birinci birinci select cümlesinin refaransını ikinci select cümlesine bağlayarak alabilir ve bundan bir proc oluşturabilirsiniz.
    3-dinamik sql dediğimiz select cümlelerini değişkenlere yükleyerek işlem yapabilirsiniz.
  ilk elde aklıma gelenler bunlar. Sql sorularınızı bayi destek sql bölümümüze yazarsanız. örnek kodlarla cevaplayabilme rahatlığına sahip olurum. ;)
   Kolay Gelsin
 

Çevrimdışı aahmetkurtt

  • Logo Kullanıcısı
  • **
  • Karma: 2
Ynt: SQL YARDIM
« Yanıtla #3 : 18.01.2007, 11:57 »
yardımlarınız için teşekkür ediyorum

yanlız örnek kodları e-mail adresime gönderirseniz memnun olurum

aahmetkurtt33@hotmail.com


Çevrimdışı Erdoğan

  • Logo Sistem Administrator
  • Logo Uzmanı
  • *****
  • Karma: 27
  • Bilgi Paylaşıldıkca Değer Kazanır.
SQL YARDIM
« Yanıtla #4 : 18.01.2007, 13:06 »
Selamlar

özel mesaja gerek yok birde size gereken bir bilgi başka arkadaşlarında yararlanacağı bir bilgidir.
CREATE VIEW CAR_SON_FAT_TAR
AS
SELECT  INV.CLIENTREF,CL.CODE,CL.DEFINITION_ ,MAX(INV.DATE_) AS [TAR]
FROM LG_001_02_INVOICE INV INNER JOIN LG_001_CLCARD CL
ON CL.LOGICALREF=INV.CLIENTREF
GROUP BY INV.CLIENTREF,CL.CODE,CL.DEFINITION_

Önce bu viewi oluşturun

sonra
İstediğiniz zaman bunu çalıştırın.
SELECT CL.DEFINITION_,LG_001_02_INVOICE.NETTOTAL,
LG_001_02_INVOICE.DATE_
FROM LG_001_02_INVOICE INNER JOIN CAR_SON_FAT_TAR CL
ON CL.CLIENTREF=LG_001_02_INVOICE.CLIENTREF
AND CL.TAR=LG_001_02_INVOICE.DATE_

sorunuza uygun rapor alabilirsiniz.
Kolay Gelsin



« Son Düzenleme: 18.01.2007, 13:25 Gönderen: Erdoğan »

Çevrimdışı aahmetkurtt

  • Logo Kullanıcısı
  • **
  • Karma: 2
Ynt: SQL YARDIM
« Yanıtla #5 : 31.01.2007, 12:36 »
yardımlarından dolayı emegi geçen herkese teşekkür ediyorum

Çevrimdışı zipper

  • Yeni Kullanıcı
  • *
  • Karma: -1
SQL YARDIM
« Yanıtla #6 : 05.02.2007, 09:38 »
SQL Server’i yeniden kurmayı NERDEN NASIL YAPARIM

SADETTİN PESEN