Merhabalar,
Ustalarımız, https://accesstr.net/konu-sorguya-sira-n...tml?page=2 konusunda tek kritere göre sorguda sıra numarası eklemeyi çok güzel örneklendirmişler. Fakat üzerinde çalıştığım bir projede birden fazla kritere göre sıra numarası vermem gerekiyor.
Örneğin, https://accesstr.net/konu-sorguya-sira-n...2#pid17632 cevabında mehmetdemiral beyin eklediği örnekteki tablonun oto alanının Otomatik Sayı değil sadece Sayı olduğunu düşünürsek ve oto alanında birden fazla eşit değer olması durumunda sıra numarası 1 atlayıp kaç eşit değer varsa o kadar aynı sayı oluyor. bu durumda öncelikle oto alanı ardından tarih alanına göre sıra numarası nasıl verebiliriz?
Örneğin (yukarıdaki linkteki örnekteki oto alanı Sayı olmak kaydıyla);
tablo verilerimiz şu şekilde olduğunda:
oto tarih adsoyad
1 1.01.2009 ALİ VELİ
2 1.01.2009 AHMET MEHMET
5 10.04.2009 AYİE FSKŞLKS
7 11.04.2009 MEHMEKKS K Ş
7 20.04.2009 DKJŞLWKC KŞLKŞ
Sorgu sadece oto sayısını baz aldığı için sonucu da şöyle olmaktadır:
tarih adsoyad sırano
1.01.2009 ALİ VELİ 1
1.01.2009 AHMET MEHMET 2
10.04.2009 AYİE FSKŞLKS 3
11.04.2009 MEHMEKKS K Ş 5
20.04.2009 DKJŞLWKC KŞLKŞ 5
Sorgu Sonucunda son 2 satırın sıra numaralarının 4 ve 5 olması için tarih kısıtını da (küçükten büyüğe) nasıl sorguya dahil edebilirim?
Saygılarımla.
Birden Fazla Kritere Göre Sorguda Sıra Numarası Ekleme
SELECT GTablo.tarih, GTablo.adsoyad, (select count([oto]) from Tablo1 where [oto]<=GTablo.[oto] and [tarih]<=GTablo.[tarih]) AS sirano FROM Tablo1 AS GTablo;
Şeklinde kritere tarih eklenmeli.
ozanakkaya hocam, çok teşekkür ederim, sıralama tam istediğim gibi oldu. where koşuluna and ile eklemeyi denemiştim ama demek yazım yanlışı yaptığım yerler olmuş.
Acaba hocam, aynı sorguyu güncelleme sorgusuna dönüştürerek "oto" alanını "sirano" alanındaki değer ile nasıl güncelleriz?
aşağıdaki şekilde bir güncelleştirme sorgusu denedim;
Acaba hocam, aynı sorguyu güncelleme sorgusuna dönüştürerek "oto" alanını "sirano" alanındaki değer ile nasıl güncelleriz?
aşağıdaki şekilde bir güncelleştirme sorgusu denedim;
UPDATE adnan AS GTablo SET GTablo.oto = (select count([oto]) from adnan where [oto]<=GTablo.[oto] and [tarih]<=GTablo.[tarih]);
fakat çalıştır dediğimde "İşlem, güncelleştirilebilir sorgu kullanmalıdır" diye mesaj verdi.
Sıra Numarası oluşturduğunuz Sorgu1 isimli sorgunun Sql kaynağı
tbl_gecici isimli tablo oluşturan Sorgu2 isimli sorgunun Sql kaynağı
Tablo1'deki oto alanını güncelleyen Sorgu3'ün Sql kaynağı
Önce sorgu2 çalıştırılıp geçici tablo oluşturulur, Sorgu3 çalıştırılıp Tablo1'deki oto alanı güncelleştirilir.
SELECT GTablo.tarih, GTablo.adsoyad, GTablo.oto, (select count([oto]) from Tablo1 where [oto]<=GTablo.[oto] and [tarih]<=GTablo.[tarih]) AS sirano
FROM Tablo1 AS GTablo;
tbl_gecici isimli tablo oluşturan Sorgu2 isimli sorgunun Sql kaynağı
SELECT Sorgu1.tarih, Sorgu1.adsoyad, Sorgu1.oto, Sorgu1.sirano INTO tbl_gecici
FROM Sorgu1;
Tablo1'deki oto alanını güncelleyen Sorgu3'ün Sql kaynağı
UPDATE Tablo1 INNER JOIN tbl_gecici ON (Tablo1.tarih = tbl_gecici.tarih) AND (Tablo1.oto = tbl_gecici.oto) SET Tablo1.oto = [tbl_gecici].[sirano];
Önce sorgu2 çalıştırılıp geçici tablo oluşturulur, Sorgu3 çalıştırılıp Tablo1'deki oto alanı güncelleştirilir.
Çok teşekkür ederim hocam,
Hocam kendi projem üzerinden Sorgu1'i uyguladığımda şöyle bir problem ile karşılaştım.
öncelikle benim SIPARIS_LISTE tablomdaki alanlarım, LISTE_URETIM_SIRA ---> tür: Sayı, LISTE_KIMLIK --->tür:Otomatik Sayı (ayrıca birincil anahtar).
LISTE_URETIM_SIRA LISTE_KIMLIK sira
965 10377 1
996 10366 1
997 10127 1
997 10782 4
Acaba nerede neyi gözden kaçırıyor olabilirim?
öncelikle benim SIPARIS_LISTE tablomdaki alanlarım, LISTE_URETIM_SIRA ---> tür: Sayı, LISTE_KIMLIK --->tür:Otomatik Sayı (ayrıca birincil anahtar).
SELECT SIRALAMA.LISTE_URETIM_SIRA, SIRALAMA.LISTE_KIMLIK, (select count([LISTE_URETIM_SIRA]) from dbo_SIPARIS_LISTE where [LISTE_URETIM_SIRA]<=SIRALAMA.[LISTE_URETIM_SIRA] and [LISTE_KIMLIK]<=SIRALAMA.[LISTE_KIMLIK] ) AS sira
FROM dbo_SIPARIS_LISTE AS SIRALAMA
WHERE (((SIRALAMA.LISTE_URETIM_SIRA)<1000))
ORDER BY SIRALAMA.LISTE_URETIM_SIRA, SIRALAMA.LISTE_KIMLIK;
Burada yapmak istediğim sıralama yaparken öncelikle LISTE_URETIM_SIRA alanına baksın, bu alanda değeri eşit olanlar var ise LISTE_KIMLIK alanına bakıp küçükten büyüğe sıralasın. Fakat bu sefer sıralamayı aşağıdaki şekilde yapıyor:LISTE_URETIM_SIRA LISTE_KIMLIK sira
965 10377 1
996 10366 1
997 10127 1
997 10782 4
Acaba nerede neyi gözden kaçırıyor olabilirim?
Konuyu Okuyanlar: 1 Ziyaretçi