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

08/02/2025, 19:35

truhi

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.
08/02/2025, 20:33

berduş

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);
08/02/2025, 21:24

truhi

(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.
08/02/2025, 21:55

berduş

Rica ederim
İyi çalışmalar