Arkadaşlar kolay gelsin.
Bir tablom var.
Saat ---- Girdi
12:00 ---- 0
12:10 ---- 0
12:40 ---- 0
13:53 ---- 100
14:11 ---- 0
15:23 ---- 0
16:33 ---- 75
almak istediğim Girdide bulunan değerin yanındaki değeri bitiş saati almak, girdide bulunan değerdeki değerden önceki ilk saat değerini de başlangıç saati yapmak. İstediğim aşşağıdaki şekilde bir sorgu yapmak.
Affınıza sığınarak beceremedim.
Girdi------------Baş Saati---------Bitiş Saati
100-------------12:00-------------13:53
75--------------14:11-------------16:33
Girdi değerleri Sıfır veya rakam olacak. Rakam ise Bitiş Saati Rakamın yanındaki Saat değeri olacak. Başlangıç Saati de Bitiş saatinden önceki ilk Sıfır değerindeki Saat olacak.
Bu şekilde bir sorgu yazmam gerekiyor ve beceremiyorum. Yardımcı olursanız sevinirim.
Kolay gelsin.
Başlangıç ve bitiş saati sorgulatmak
Eğer Çok büyük data içermiyor ise bunu Delphi ayağında yapın ve bahsettiğiniz kontrolleri yaparak (döngü ile halledin) eğer data çok fazla diyorsanız (aslında az yada çok benim için farketmez ama) SP yapın.
Bunu bir Query (Sorgu) ile halledeceğim diye boşuna kastırmayın, zira bu tür bir sorguyu yazsanız bile illaki dönen sonuç setinde döngü kurmanız gerekecek.
Bence bir daha düşünün.
Kolay Gelsin
Bunu bir Query (Sorgu) ile halledeceğim diye boşuna kastırmayın, zira bu tür bir sorguyu yazsanız bile illaki dönen sonuç setinde döngü kurmanız gerekecek.
Bence bir daha düşünün.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
ilginize çok teşekkür.
ama benim sürekli giriş yapılan bir veritabanım var. Burda Girilen her kayda ait Saati sistem saatinden alyor ve Saat kolonuna işliyor. Ve Girdi kolonuna aralıklı veri girişi oluyor. Yalnız Girdideki veri girişleri de yine Girdiyle bağlantılılı veriler içeriyor. Girdiye giriş yapılınca O anki işlem sonlanıyor.
Benden talep edilen Girdilerle ilgili bir rapor ve bu raporda her girdinin başlangıç ve bitiş saati ve farkı. Daha sonrada Bunların ayrıca Müşteri bzlı ortalmaları talep ediliyor.
Bu nedenle bu tablodan bir şekilde belirttiğim şekilde verileri sorgulatmam lazım ki diğer taleplere cevap verebileyim.
tablo
Müşeteri--Saat ---- Girdi
ahmet----12:00 ---- 0
ahmet----12:10 ---- 0
ahmet----12:40 ---- 0
ahmet----13:53 ---- 100
Ali--------14:11 ---- 0
Ali--------15:23 ---- 0
Ali--------16:33 ---- 75
sorgu
Müşteri--Girdi------------Baş Saati---------Bitiş Saati
ahmet---100-------------12:00-------------13:53
Ali-------75--------------14:11-------------16:33
teşekkürler.
ama benim sürekli giriş yapılan bir veritabanım var. Burda Girilen her kayda ait Saati sistem saatinden alyor ve Saat kolonuna işliyor. Ve Girdi kolonuna aralıklı veri girişi oluyor. Yalnız Girdideki veri girişleri de yine Girdiyle bağlantılılı veriler içeriyor. Girdiye giriş yapılınca O anki işlem sonlanıyor.
Benden talep edilen Girdilerle ilgili bir rapor ve bu raporda her girdinin başlangıç ve bitiş saati ve farkı. Daha sonrada Bunların ayrıca Müşteri bzlı ortalmaları talep ediliyor.
Bu nedenle bu tablodan bir şekilde belirttiğim şekilde verileri sorgulatmam lazım ki diğer taleplere cevap verebileyim.
tablo
Müşeteri--Saat ---- Girdi
ahmet----12:00 ---- 0
ahmet----12:10 ---- 0
ahmet----12:40 ---- 0
ahmet----13:53 ---- 100
Ali--------14:11 ---- 0
Ali--------15:23 ---- 0
Ali--------16:33 ---- 75
sorgu
Müşteri--Girdi------------Baş Saati---------Bitiş Saati
ahmet---100-------------12:00-------------13:53
Ali-------75--------------14:11-------------16:33
teşekkürler.
Selamlar,
Veri tabanınız nedir? Eğer İVTYS (İlişkisel Veri Tabanı Yönetim Sistemlerinde- RDBMS'lerden) birini kullanıyorsanız SP yapın.
Söylediğiniz tarzda bir sorgu hazırlanır mı bilmiyorum ! Tek bir Sorguda alabilmek imkansız gibi görünüyor (imkansız olmayabilir ama öyle gibi) çünkü aynı tablodan farklı satırları aynı satırmış gibi gösterip bunları eleyerek getireceksiniz. !!!
Bunun yerine tekrar ediyorum siz bu işi bir SP'ye yıkın. Oradan sonuç olarak size Sorgu dönüş seti (Query Result Set) şeklinde bir değer döndürürsünüz ve yapacağınız işlemlerde de bu sonuç setini kullanabilirsiniz. Normal Sorgu'dan farkı olmaz !...
Yahut da SP'de oluşan sonucu bir geçici tabloya (rapor tablosuna) atarsınız, sonra rapor tablosundan işlemlerinize devam edersiniz.
Bilmem açıklayıcı oldu mu?
Kolay Gelsin
Veri tabanınız nedir? Eğer İVTYS (İlişkisel Veri Tabanı Yönetim Sistemlerinde- RDBMS'lerden) birini kullanıyorsanız SP yapın.
Söylediğiniz tarzda bir sorgu hazırlanır mı bilmiyorum ! Tek bir Sorguda alabilmek imkansız gibi görünüyor (imkansız olmayabilir ama öyle gibi) çünkü aynı tablodan farklı satırları aynı satırmış gibi gösterip bunları eleyerek getireceksiniz. !!!
Bunun yerine tekrar ediyorum siz bu işi bir SP'ye yıkın. Oradan sonuç olarak size Sorgu dönüş seti (Query Result Set) şeklinde bir değer döndürürsünüz ve yapacağınız işlemlerde de bu sonuç setini kullanabilirsiniz. Normal Sorgu'dan farkı olmaz !...
Yahut da SP'de oluşan sonucu bir geçici tabloya (rapor tablosuna) atarsınız, sonra rapor tablosundan işlemlerinize devam edersiniz.
Bilmem açıklayıcı oldu mu?
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Merhaba,
Kayıt numaralarını düzgün girmek ve hiç atlamamak koşulu ile aşağıdaki sp ile istediğinizi alabilirsiniz. Kayıt nosunu generatordan otomatik oluşturursanız bir sorununuz olmaz.
Ben istediğiniz sonucu almak için aşağıdaki tabloyu oluşturup aşağıdaki verileri girdim.
vt olarak firebird ü kullandım.
daha sonra aşağıdaki sp yi oluşturdum.
ibexpert içinden tools/sql editörünü seçip
yazıp çalıştırınca
sonucunu verdi. Bu da sanırım istediğiniz şeydir.
Kolay gelsin.
Kayıt numaralarını düzgün girmek ve hiç atlamamak koşulu ile aşağıdaki sp ile istediğinizi alabilirsiniz. Kayıt nosunu generatordan otomatik oluşturursanız bir sorununuz olmaz.
Ben istediğiniz sonucu almak için aşağıdaki tabloyu oluşturup aşağıdaki verileri girdim.
vt olarak firebird ü kullandım.
Kod: Tümünü seç
CREATE TABLE PERSONEL (
KNO INTEGER NOT NULL,
SAAT TIME,
GIRDI INTEGER
);
Kod: Tümünü seç
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (1, '12:00:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (2, '12:10:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (3, '12:40:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (4, '13:53:00', 100);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (5, '14:11:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (6, '15:23:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (7, '16:33:00', 75);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (8, '16:40:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (9, '17:05:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (10, '17:20:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (11, '17:35:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (12, '17:45:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (13, '17:30:00', 85);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (14, '17:43:00', 0);
INSERT INTO PERSONEL (KNO, SAAT, GIRDI) VALUES (15, '18:25:00', 93);
COMMIT WORK;
Kod: Tümünü seç
CREATE PROCEDURE SAAT
RETURNS (
GIRDI_SONUCU INTEGER,
BASLAMA_ZAMANI TIME,
BITIS_ZAMANI TIME)
AS
DECLARE VARIABLE SAYAC INTEGER;
DECLARE VARIABLE SIMDIKI INTEGER;
DECLARE VARIABLE ONCEKI INTEGER;
begin
sayac=0 ;
for select kno,girdi,personel.saat from personel where girdi<>0 into :simdiki,girdi_sonucu,bitis_zamani do
begin
sayac=sayac+1;
if (sayac=1) then
begin
for select personel.saat from personel where kno=1 into :baslama_zamani do
begin
onceki=simdiki;
suspend;
end
end
if (sayac>1) then
begin
for select personel.saat from personel where kno=:onceki+1 into :baslama_zamani do suspend;
onceki=:simdiki;
end
end
end
Kod: Tümünü seç
select * from saat
Kod: Tümünü seç
GIRDI_SONUCU BASLAMA_ZAMANI BITIS_ZAMANI
------------------- ---------------------- ------------------
100 12:00 13:53
75 14:11 16:33
85 16:40 17:30
93 17:43 18:25
Kolay gelsin.
selamlar ve şimdiden iyi bayramlar.
Sn. Kuri_YJ Kullandığım VEritabanı sql server 2000. Ama inanın öyle bir kafayı patlattım ki bu konuda artık beynim durdu. SP'de netür bir çözüm üreteceğim hakkında hiçbir fikir üretemez durumdayım.
Sn OfenX tablomda şuan yaklaşık 300.000 kayıt ve 30 Colon var. Dolayısı ile tablomda bir KayıtNo var ama sadece srgulatmak istediğim değil tüm kolonlarla ilişkili. Dolayısı ile Mesela KayıtNo artan sıralamayla ama peşpeşe değil. (1-7-33-57-98 Kayıt numaraları sadece belirtilen kolonlara ait iken ara numaralarda diğer kolonlarla ilgili kayıtlar var.)
saygılar.
Sn. Kuri_YJ Kullandığım VEritabanı sql server 2000. Ama inanın öyle bir kafayı patlattım ki bu konuda artık beynim durdu. SP'de netür bir çözüm üreteceğim hakkında hiçbir fikir üretemez durumdayım.
Sn OfenX tablomda şuan yaklaşık 300.000 kayıt ve 30 Colon var. Dolayısı ile tablomda bir KayıtNo var ama sadece srgulatmak istediğim değil tüm kolonlarla ilişkili. Dolayısı ile Mesela KayıtNo artan sıralamayla ama peşpeşe değil. (1-7-33-57-98 Kayıt numaraları sadece belirtilen kolonlara ait iken ara numaralarda diğer kolonlarla ilgili kayıtlar var.)
saygılar.