İlişkisel Veritabanı Sorgusu¶
Emakin, ilişkisel veritabanlarıyla etkileşim için sadelik ve güvenliğe öncelik veren özel bir sorgu modeli kullanır. SQL olmayan bu model, hem iş kullanıcılarının hem de geliştiricilerin erişebileceği kullanıcı dostu bir arayüz sunar. Emakin, veritabanında yürütülmek üzere bu sorgu modelini dahili olarak SQL'e dönüştürür. Birleştirme, gruplama ve having yan tümceleri gibi karmaşık SQL kavramları, sağlanan sorgu modeline göre Emakin sistemi tarafından otomatik olarak işlenir.
Sorgu İfadeleri¶
Sorgu ifadeleri, tablo alanlarını benzersiz biçimde tanımlar. Belirsizliği önlemek için şu biçimlerden birini izler: Field, Relation.Field, veya Relation.Relation.Field, belirsizliği önler.
Örneğin, Customers.Name ifadesi Name tablosundaki alanı belirtir. Sorgu ifadeleri, sorgu modelinin hem Customers hem de Columns bölümlerinde kullanılır. Criteria
Bir Customers tablo ele alındığında, aşağıdaki ifadeler ilişkili verilere nasıl erişilebileceğini gösterir:
Name->Customers.NameOrders.Amount->Orders.AmountOrders.Product.Name->Products.NameOrders.Product.Category.Name->Categories.Name
İfade İşlevleri¶
Temel alan referanslarının yanı sıra sorgu modeli, gelişmiş veri işleme ve toplama için işlev çağrılarını da destekler.
Matematiksel İşlevler¶
Sütun ifadelerinde matematiksel işlemler kullanılabilir:
- Toplama:
A + B - Çıkarma:
A - B - Çarpma:
A * B - Bölme:
A / B
Bu matematiksel işlevlerin yorumunun doğrudan SQL'e çevrildiğini ve sonuçların temel alınan veritabanı sistemine bağlı olarak biraz farklılık gösterebileceğini unutmayın.
Değer İşlevleri¶
- Now(): Geçerli tarih ve saati döndürür.
Tarih ve Saat İşlevleri¶
-
DatePart(part, date): Bir tarih değerinin belirtilen bölümünü çıkarır.
partşunlardan biri olabilir:'Year','Quarter','Month','Week','Day','Hour','Minute','Second'. Örnek:DatePart('Year', Orders.OrderDate) -
DateDiff(part, date1, date2): İki tarih arasındaki farkı hesaplar.
partile aynı değerleri kullanırDatePart. Örnek:DateDiff('Day', Orders.OrderDate, Orders.ShipDate) -
DateTrunc(part, date): Bir tarih değerini belirtilen bölüme göre keser.
partile aynı değerleri kullanırDatePart. Örnek:DateTrunc('Month', Orders.OrderDate)
Toplama İşlevleri¶
Toplama işlevleri birden çok değer üzerinde çalışarak tek bir sonuç döndürür:
- Count(): Satır sayısını sayar.
- Sum(): Değerlerin toplamını hesaplar.
- SumDistinct(): Benzersiz değerlerin toplamını hesaplar.
- Avg(): Değerlerin ortalamasını hesaplar.
- AvgDistinct(): Benzersiz değerlerin ortalamasını hesaplar.
- Min(): En küçük değeri döndürür.
- Max(): En büyük değeri döndürür.
- StdDev(): Standart sapmayı hesaplar.
Sorgu Modelinin Gösterimi¶
Emakin sorgu modeli XML veya JSON kullanılarak gösterilebilir. Form sorgu tasarımcısı XML kullanırken, örneğin \$Database.GetData gibi komut dizisi işlevleri JSON kullanır.
Örnek (XML):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Örnek (JSON):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | |
Bu örnekler, "Apple" adlı ürünlerin bulunduğu siparişleri filtreleyip sonuçları ürün adına göre sıralayarak Orders şemasındaki CRM tablosundan veri almak için sorgunun nasıl oluşturulacağını gösterir.