GönderenKonu: SQL ÖRNEKLER  (Okunma sayısı 2144 defa)

Admin

  • Site Yöneticisi
  • İleti: 22
  • Üyelik Tarihi: 10-11-2011
SQL ÖRNEKLER
Tarih : 26-03-2013 Saat : 22:56

---------------------------
CARİPRO'DA GELİŞMİŞ BÖLÜMDEKİ BAKİYE LİSTESİNE GRUP ALANINDA ESKİ BİLGİLERİN GRUPLARI GÖRÜNSÜN DİYE AŞAĞIDAKİ SORGUYU ÇALIŞTIR:
UPDATE CARIISLEM SET GURUPADI=(SELECT GURUPADI FROM CARIKART WHERE KODU=CARIISLEM.MKODU);

---------------------------
EXPRESS MARKETTE ÇOK FAZLA OLUP DA HAREKET GÖRMEMİŞ STOKLARI PASİF YAPMAK İÇİN:
update stokkart set aktif = 'P' where toplamgiris=0 and toplamcikis=0 and devir=0 and idkodu >50 and idkodu < 50000


------------------------------------------------------------------------

BİR TARİHTE BAKİYE HESAPLAMA EXPRESS'TE:

Cariler İçin:

update cariislem set verilen=0 where verilen is null
update cariislem set alinan=0 where alinan is null


SELECT mkodu,(select unvani from carikart where idkodu=mkodu),trunc((sum(verilen)-sum(alinan)),2) Borc_Alacak,trunc((select devir from carikart where idkodu=mkodu and devirturu='V'),2) Devir_Borc,trunc(-(select devir from carikart where idkodu=mkodu and devirturu='A'),2) Devir_Alacak FROM cariislem where unvani<>'' and tarih<'01.01.2013' and islemturu not in(134,135) group by mkodu
Bunun sonucunu excele aktarıp son üç sütünu toplayınca gerçek bakiye oluşur.

SELECT mkodu,unvani,trunc(sum(verilen)-sum(alinan),2) FROM cariislem where unvani<>'' and tarih<'01.01.2013' group by mkodu,unvani

SELECT mkodu,unvani,trunc(sum(verilen)-sum(alinan),2) FROM cariislem where unvani<>'' group by mkodu,unvani


Stoklar İçin:



------------------------------------------------------------------------

sORGUDA LIKE KULLANIMI ÖRNEKLERİ (CPRO):

cariislem tablosu
delete from cariislem where aciklama like '%1.Ay 2012 Aidat%'


kalan tablosu
delete from kalan where odemetarihi='30.01.2012' and mkodu in (select mkodu from cariislem where aciklama like '%CAK%' OR aciklama like '%cak%')


------------------------------------------------------------------------
ÇEVRİM KOMUT ÖRNEKLERİ:

CAST(IDKODU AS VARCHAR(10))


------------------------------------------------------------------------
İÇEREN-BİRLEŞEN KOMUT ÖRNEKLERİ:

EXTRACT( YEAR FROM NEW.ODEMETARIHI)

NEW.AYLAR = EXTRACT( MONTH FROM NEW.VADE);

.....WHERE gurupadi IN ('Aidat','Aidat Eski');

.....(ISLEMTURU IN (6,7,136))
.....islemturu not in(134,135)

SUBSTRING(TARIH FROM 6 FOR 2)

IF (SUBSTRING(OLD.ISLEMTURU FROM 1 FOR 3) = 'Sat' AND char_length(OLD.ISLEMTURU)=5) THEN..........

IF (NEW.ISLEMTURU = 'Devir' and new.borc is not null) then...................

ACK = LEFT(new.aciklama||'..'||(SELECT MIN(ACIKLAMA) FROM CARIISLEM WHERE ISLEMNO = NEW.ISLEMNO),100);  (BİRLEŞEN ÖRNEĞİ İKİ ÇİZGİ CTRL+ALT BÜYÜK KÜÇÜK TUŞU)


------------------
TARİH:

current_date
current_timestamp

-----------------
GENERATOR:

NEW.KODU = GEN_ID(BARKOD, 1); (GENERATORU BİR ARTIR)
NEW.MKODU=GEN_ID(carikart, 0); (GENERATORUN O ANKİ DEĞERİNİ EŞİTLE)

-------------------------------------------------------------------------
if ((select FIRST 1 TUTAR from KALAN WHERE ISLEMNO=NEW.ISLEMNO AND TARIH='10.11.1938') IS NULL) then

---------------------------------------------
EXPRESS : KARŞILIKSIZ BARKODLARI SİLME PROSEDÜRÜ:

/*Barkod Karsiligi StokKart Tablosunda Olmayan Barkodlari Sil*/
DECLARE VARIABLE KODU DOUBLE PRECISION;
begin
FOR
SELECT BARKOD.UKODU
FROM STOKKART RIGHT JOIN BARKOD ON STOKKART.IDKODU = BARKOD.UKODU
WHERE (((STOKKART.IDKODU) Is Null))
INTO
:KODU
DO
BEGIN
DELETE FROM BARKOD WHERE UKODU = :KODU;
END
  suspend;
end
----------------------------------------------
EXPRESS : YİNELENEN BARKODLAR

begin
/*Barkodu Aynı Olan Mükerrer Kayıtları Sil (BARKOD ALANINA GÖRE GRUPLAYIP İÇİNDEKİ EN KÜÇÜK ID Yİ SİLECEK)*/
DELETE FROM BARKOD WHERE NOT IDKODU IN (SELECT MIN(IDKODU) FROM BARKOD GROUP BY BARKOD);
DELETE FROM STOKKART WHERE NOT IDKODU IN (SELECT MIN(IDKODU) FROM STOKKART GROUP BY BARKOD);
  suspend;
end
----------------------------------------------
CARİPRO KARŞILIKSIZ TAKSİTLERİ SİLME PROSEDÜRÜ:

DECLARE VARIABLE KODU DOUBLE PRECISION;
begin
FOR
SELECT KALAN.MKODU
FROM CARIKART RIGHT JOIN KALAN ON CARIKART.KODU = KALAN.MKODU
WHERE (((CARIKART.KODU) Is Null))
INTO
:KODU
DO
BEGIN
DELETE FROM KALAN WHERE MKODU = :KODU;
DELETE FROM KALANPLAN WHERE MKODU = :KODU;
END
  suspend;
end
---------------------------------------------
EXPRESS: Hareket Görmemiş ve Elde Olmayan Ürünleri Pasif Yapmak
 
update stokkart set aktif = 'P' where toplamgiris=0 and toplamcikis=0 and devir=0 and idkodu >50 and idkodu < 50000
--------------------------------------------
CARİPRO : TUTARSIZ VE TAKSİT YAZILARINI SİLMEK


1-DÖNGÜ İLE; (YARIM KALDI)
AS
DECLARE KODU DOUBLE PRECISION;

BEGIN
IF (SUBSTRING(UYARI_MESAJ FROM 1 FOR 9) = 'TUTARSIZ/') THEN UYARI_MESAJ=SUBSTRING(UYARI_MESAJ FROM 10 FOR (CHAR_LENGTH(NEW.UYARI_MESAJ)-9));
IF (SUBSTRING(UYARI_MESAJ FROM 1 FOR 7) = 'Taksit/') THEN UYARI_MESAJ=SUBSTRING(UYARI_MESAJ FROM 8 FOR (CHAR_LENGTH(NEW.UYARI_MESAJ)-7));
END

2-UPDATE SORGUSU İLE:
UPDATE CARIKART SET UYARI_MESAJ=SUBSTRING(UYARI_MESAJ FROM 10 FOR (CHAR_LENGTH(UYARI_MESAJ)-9)) WHERE (SUBSTRING(UYARI_MESAJ FROM 1 FOR 9) = 'TUTARSIZ/');
UPDATE CARIKART SET UYARI_MESAJ=SUBSTRING(UYARI_MESAJ FROM 8 FOR (CHAR_LENGTH(UYARI_MESAJ)-7)) WHERE (SUBSTRING(UYARI_MESAJ FROM 1 FOR 7) = 'Taksit/');
 
--------------------------------------------
CARİPRO : CARIISLEM BEFORE INSERT TRIGGER ÖRNEĞİ:

AS
declare variable BAK INTEGER;
declare variable ay date;
declare variable ayadi varchar(7);
BEGIN

NEW.GURUPADI=(SELECT GURUPADI FROM CARIKART WHERE KODU=NEW.MKODU);
IF (SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 5) = 'Kredi' OR SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 6) = 'Havale') THEN
BEGIN
NEW.BANKAADI=(SELECT BANKAADI FROM HESAP_AYRINTI WHERE ISLEMNO=NEW.ISLEMNO);
END

IF (NEW.GURUPADI in ('Aidat','Aidat Eski')/*OR (SUBSTRING(NEW.GURUPADI FROM 1 FOR 3) = 'Sat' AND char_length(NEW.GURUPADI)=5)*/) THEN
BEGIN
IF (SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 5) = 'Nakit' OR SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 5) = 'Kredi' OR SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 6) = 'Havale') THEN
BEGIN
IF (NEW.ACIKLAMA IS NULL) THEN
BEGIN
NEW.ACIKLAMA='';
END
IF (NEW.EVRAKNO IS NULL) THEN
BEGIN
NEW.EVRAKNO='';
END
IF ((SELECT SEMT FROM CARIKART WHERE KODU=NEW.MKODU) IS NULL) THEN
BEGIN
NEW.ACIKLAMA = NEW.ACIKLAMA || '(Evrak:'|| NEW.ISLEMNO || '-'|| NEW.EVRAKNO|| ')';
END
IF ((SELECT SEMT FROM CARIKART WHERE KODU=NEW.MKODU) IS NOT NULL) THEN
BEGIN
NEW.ACIKLAMA = NEW.ACIKLAMA || '('||(SELECT SEMT FROM CARIKART WHERE KODU=NEW.MKODU)||')-Evrak:'|| NEW.ISLEMNO || '-'|| NEW.EVRAKNO;
END
IF ((SELECT MIN(ODEMETARIHI) FROM KALAN WHERE MKODU=NEW.MKODU) IS NOT NULL) THEN
BEGIN
ay=(SELECT MIN(ODEMETARIHI) FROM KALAN WHERE MKODU=NEW.MKODU);
select case extract(month from :ay)
             when '01' then 'Ocak'
             when '02' then 'Subat'
             when '03' then 'Mart'
             when '04' then 'Nisan'
             when '05' then 'Mayis'
             when '06' then 'Haziran'
             when '07' then 'Temmuz'
             when '08' then 'Agustos'
             when '09' then 'Eylul'
             when '10' then 'Ekim'
             when '11' then 'Kasim'
             when '12' then 'Aralik'
          end from rdb$database into :ayadi;
NEW.ACIKLAMA=LEFT((NEW.ACIKLAMA || ' '||trim (:ayadi)||' '||extract(year from :ay)||' Borcuna'),200);
END
END
END
if (new.harekettipi='H') then new.harekettipi=null;
if (new.borc is null and new.alacak is null and new.aciklama is null) then new.aciklama='Bos Belge..Duzenleyin veya Silin..';
NEW.AYLAR = EXTRACT( MONTH FROM NEW.TARIH);
  IF (NEW.KODU IS NULL OR NEW.KODU=0) THEN
  BEGIN
    NEW.KODU = GEN_ID(CARIISLEM,1);
    END
  IF (NEW.ISLEMNO IS NULL OR NEW.ISLEMNO=0) THEN
  BEGIN
    NEW.ISLEMNO = GEN_ID(ISLEMNO,1);
    END
IF (SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 7) = 'Gecikme') THEN
BEGIN
IF ((SELECT ALACAK from CARIISLEM WHERE KODU=NEW.KODU-1) > NEW.BORC) THEN
BEGIN
UPDATE CARIISLEM SET ACIKLAMA=CAST(ALACAK AS INTEGER)||'.TL Tahsil/', ALACAK= ALACAK-NEW.BORC WHERE KODU = NEW.KODU-1;
NEW.BORC = 0;
NEW.ISLEMTURU = 'Gecikme';
NEW.ACIKLAMA = 'Gecikme;Yukaridaki Tahsilattan Mahsup Edildi..';
END
IF ((SELECT ALACAK from CARIISLEM WHERE KODU=NEW.KODU-1) = NEW.BORC) THEN
BEGIN
NEW.BORC = 0;
NEW.ISLEMTURU = 'Gecikme';
NEW.ACIKLAMA = 'Yukarida Girdiginiz Tutar,Cezadan(Faizden) Az Olamaz.';
END
END
IF ((NEW.ISLEMTURU IN ('Nakit Tahsilat','Kredi K.Tahsilat','Havale Al')) OR (SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 2) = 'Al' AND char_length(NEW.ISLEMTURU)=10) OR (SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 2) = 'Al' AND char_length(NEW.ISLEMTURU)=12)) THEN

IF ((NEW.ISLEMTURU IN ('Nakit Tahsilat','Kredi K.Tahsilat')) and (NEW.MKODU=0) AND (NEW.unvani IS NULL)) THEN
begin
NEW.MKODU=GEN_ID(carikart, 0)/*(SELECT MAX(kodu) FROM CARIKART)*/;
NEW.UNVANI=(select UNVANI FROM CARIKART where KODU=GEN_ID(carikart, 0)/*(SELECT MAX(kodu) FROM CARIKART)*/);
NEW.BANKAADI=(select BANKAADI from hesap_ayrinti WHERE KODU=GEN_ID(HESAP_AYRINTI, 0)/*(SELECT MAX(KODU) FROM HESAP_AYRINTI)*/);
END

/*Toplu Aidat icin karsiliginda taksit olustur ve baska isleme izin verme-basla*/
if (NEW.ACIKLAMA=EXTRACT( MONTH FROM NEW.TARIH)||'.Ay '||EXTRACT( YEAR FROM NEW.TARIH)||' Aidat') then
begin
/*Taksit olustur-basla*/

/*diger yontem toplu ekleme
INSERT INTO kalan (MKODU, UNVANI, ODEMETARIHI, KULLANICIADI,BORC, TUTAR, BORCLU5,TARIH , BORCLU4)
select
kodu, unvani, NEW.TARIH,NEW.kullaniciadi,NEW.BORC, NEW.BORC, current_date,current_timestamp,EXTRACT( MONTH FROM NEW.TARIH||'.Ay '||EXTRACT( YEAR FROM NEW.TARIH)||' Aidat'
FROM carikart WHERE GURUPADI='Aidat';*/

BAK=(SELECT COUNT(KODU) FROM KALAN WHERE MKODU=NEW.mkodu AND BORCLU4=(EXTRACT( MONTH FROM NEW.TARIH)||'.Ay '||EXTRACT( YEAR FROM NEW.TARIH)||' Aidat'));
if (BAK is NULL OR BAK=0) then
BEGIN
INSERT INTO kalan (MKODU, UNVANI, ODEMETARIHI, KULLANICIADI,BORC, TUTAR, BORCLU5,TARIH , BORCLU4,ISLEMNO)
VALUES (NEW.MKODU,NEW.UNVANI, NEW.TARIH,NEW.kullaniciadi,NEW.BORC, NEW.BORC, current_date,current_timestamp,EXTRACT( MONTH FROM NEW.TARIH)||'.Ay '||EXTRACT( YEAR FROM NEW.TARIH)||' Aidat',NEW.ISLEMNO);
END
/*Taksit olustur-bitir*/
end
if (NEW.UNVANI='Toplu Aidat') then
if (SUBSTRING(NEW.ISLEMTURU FROM 1 FOR 3) = 'Sat' AND char_length(NEW.ISLEMTURU)=5) then
BEGIN
END
else
BEGIN
exception mesaj_aidat;
END
/*Toplu Aidat icin karsiliginda taksit olustur ve baska isleme izin verme-bitir*/

END

--------------------------------------------
CARİPRO : KALAN TABLOSU AFTER UPDATE DÖNGÜ ÖRNEĞİ:

AS
declare variable istar double precision;
declare makkod double precision;
DECLARE KODU DOUBLE PRECISION;
begin
/*Eksilen Kadar Tahsilati KalanPlan Tablosuna Ekle-Basla*/
if (OLD.TUTAR>NEW.TUTAR) then
begin
makkod=(select max(kodu) from cariislem where mkodu=new.mkodu);
istar=(current_timestamp-(select islemtarihi from cariislem where kodu=:makkod));
if  (istar<0.000190000)then
begin
INSERT INTO
KALANPLAN (KODU,MKODU,BORC,TARIH,ODEMETARIHI,TEL1,TEL2,CEPTEL,ISLEMNO,
TUTAR,GUN,GECIKMEZAMMI,OZAM,SZAM,IGUN,DURUM,GTARIH,ETARIH,SEMT,OTARIH,SECIM,ORAN,
KULLANICIADI,GURUPADI,CARINO,ISLEMTARIHI,BORCLU1,BORCLU2,BORCLU3,BORCLU4,BORCLU5,
OZELKOD,ACIKLAMA,UNVANI,AYLAR,cariislemkodu)
VALUES
(NEW.KODU,NEW.MKODU,OLD.TUTAR-NEW.TUTAR,NEW.TARIH,NEW.ODEMETARIHI,NEW.TEL1,NEW.TEL2,NEW.CEPTEL,NEW.ISLEMNO,
OLD.TUTAR-NEW.TUTAR,NEW.GUN,NEW.GECIKMEZAMMI,NEW.OZAM,NEW.SZAM,0,NEW.DURUM,NEW.GTARIH,NEW.ETARIH,NEW.SEMT,NEW.OTARIH,NEW.SECIM,NEW.ORAN,
NEW.KULLANICIADI,NEW.GURUPADI,NEW.CARINO,NEW.ISLEMTARIHI,NEW.BORCLU1,NEW.BORCLU2,NEW.BORCLU3,NEW.BORCLU4,NEW.BORCLU5,
NEW.OZELKOD,NEW.ACIKLAMA,NEW.UNVANI,NEW.AYLAR,:makkod);
end
if (istar<0) then exception MESAJ_SISTEM;
end
/*Eksilen Kadar Tahsilati KalanPlan Tablosuna Ekle-Bitir*/

/*Mükerrer Aidatlari Sil-Basla*/
if (NEW.UNVANI='Toplu Aidat') then
BEGIN
FOR
SELECT
KODU
FROM carikart WHERE GURUPADI='Aidat'
INTO
:KODU
DO
DELETE FROM CARIISLEM WHERE MKODU=:kodu AND TARIH=NEW.ODEMETARIHI AND ACIKLAMA= EXTRACT( MONTH FROM NEW.ODEMETARIHI)||'.Ay '||EXTRACT( YEAR FROM NEW.ODEMETARIHI)||' Aidat' and BORC=NEW.TUTAR ROWS 2 TO 2;
end
/*Mükerrer Aidatlari Sil-Bitir*/
end
------------------------------------------------------


Ibrahim

  • Forum Üyesi
  • İleti: 1
  • Üyelik Tarihi:
RE:SQL ÖRNEKLER
Tarih : 14-06-2014 Saat : 14:29
benim meylim HUSEYNOV-IBRAHIM@BK.RU   bana yaziniz sorucaklarim var. ben bu sayifadan hic bi wey anlayamadim. mutlaka bana yazin. komeyinize ihtiyacim var