Skip to main content

AccessTr.neT


Sorguda Sıralamanın Farklı Kriterlere Göre Yapılması...

Sorguda Sıralamanın Farklı Kriterlere Göre Yapılması...

Çözüldü #1
Kıymetli Hocalarım merhaba,

ekli database' de tbl_Param sayfasında 4 parametre (RaporTuru) mevcut,

1-Bağımsız Denetim
2-Tam Tasdik
3-Kdv İade
4-Diğer Raporlar


Bu raporların yazılı olduğu tbl_Orders tablosundan oluşturulan sorguda;
sıralamanın alfabetik olarak değilde; tbl_Param tablsoundaki sıralamaya göre yapılması mümkün müdür?

Not: Burada sadece 4 adet parametre bulunuyor, bunlar manuel olarakta belirlenebilir, illaki tablodan alması zorunlu değil


Kod:
SELECT tbl_Orders.RaporTuru, Count(tbl_Orders.id) AS Sayid
FROM tbl_Orders
GROUP BY tbl_Orders.RaporTuru
ORDER BY tbl_Orders.RaporTuru;

yardımlarınız için şimdiden teşekkürler,
iyi akşamlar.
.rar Db2.rar (Dosya Boyutu: 1,75 MB | İndirme Sayısı: 2)
truhi, 29-09-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#2
aşağıdaki kodu deneyebilirsiniz ama bence çalışmanız ilişkili tablo mantığına ters
parametre tablosunda zaten tablo türünün ID ve Adı var, tbl_Orderski RaporTuru alanı gereksiz yere parametre tablosundaki alan, RaporTuru alanıyla ilişkilendirilmiş
oysa tbl_Orders tablosundaki rapor türü alanı uzun tamsayı yapılıp tbl_Param tablosundaki ID alanıyla ilişkilendirilseydi hem sıralama için param tablosuna gerek kalmayacaktı hem de veri israfı olmayacaktı.
şöyle düşünün Kdv iade değeri 8 karakter, oysa aynı alanın ID değeri tek haneli bir sayı yada diyelim ki 100lerce tür var en fazla 999 yani 3 hane,
aşağıda 3 farklı tür için hafızada kaplanan alan gösterilmiştir

MS Access’te
1 - "Kısa Metin (Short Text)" alanı her karakter için 1 bayt kullanır.
8 karakter olduğu için: 8 bayt

2 - "Uzun Tam Sayı (Long Integer)" veri türü sabit olarak 4 bayt kaplar.
Sayının kaç basamaklı olduğu önemli değildir, her zaman 4 bayt kullanır.

3 - "Tam Sayı (Integer)" veri türü sabit olarak 2 bayt kaplar.
Sayının 3 haneli olması fark etmez, her zaman 2 bayt yer kaplar.

ama asıl önemli olan metin verileri girilirken yazım hatalarının olabilme ihtimali de vardır
SELECT tbl_Orders.RaporTuru, Count(tbl_Orders.id) AS Sayid
FROM tbl_Orders INNER JOIN tbl_Param ON tbl_Orders.RaporTuru = tbl_Param.RaporTuru
GROUP BY tbl_Orders.RaporTuru
ORDER BY First(tbl_Param.id);
Cevapla
#3
(08/02/2025, 20:33)berduş yazdı: aşağıdaki kodu deneyebilirsiniz ama bence çalışmanız ilişkili tablo mantığına ters
parametre tablosunda zaten tablo türünün ID ve Adı var, tbl_Orderski RaporTuru alanı gereksiz yere parametre tablosundaki alan türü alanıyla ilişkilendirilmiş
oysa tbl_Orders tablosundaki rapor türü alanı uzun tamsayı yapılıp tbl_Param tablosundaki ID alanıyla ilişkilendirilseydi hem sıralama için param tablosuna gerek kalmayacaktı hem de veri israfı olmayacaktı.
şöyle düşünün Kdv iade değeri 8 karakter, oysa aynı alanın ID değeri tek haneli bir sayı yada diyelim ki 100lerce tür var en fazla 999 yani 3 hane,
aşağıda 3 farklı tür için hafızada kaplanan alan gösterilmiştir

MS Access’te
1 - "Kısa Metin (Short Text)" alanı her karakter için 1 bayt kullanır.
8 karakter olduğu için: 8 bayt

2 - "Uzun Tam Sayı (Long Integer)" veri türü sabit olarak 4 bayt kaplar.
Sayının kaç basamaklı olduğu önemli değildir, her zaman 4 bayt kullanır.

3 - "Tam Sayı (Integer)" veri türü sabit olarak 2 bayt kaplar.
Sayının 3 haneli olması fark etmez, her zaman 2 bayt yer kaplar.

ama asıl önemli olan metin verileri girilirken yazım hatalarının olabilme ihtimali de vardır
SELECT tbl_Orders.RaporTuru, Count(tbl_Orders.id) AS Sayid
FROM tbl_Orders INNER JOIN tbl_Param ON tbl_Orders.RaporTuru = tbl_Param.RaporTuru
GROUP BY tbl_Orders.RaporTuru
ORDER BY First(tbl_Param.id);

Çok teşekkür ederim Hocam
şimdilik işimi görüyor
iyi Akşamlar.
truhi, 29-09-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#4
Rica ederim
İyi çalışmalar
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task