v2.5.2
Giriş yap

SQL Sorgu ve Stored Procedure

jct
336 defa görüntülendi

Tablo yapım;

Payment_IDPayment_ParentPayment_AmountPayment_MethodPayment_Status
11600.00N1
22400.00K1

SQL Sorgum;

SELECT
Payment_Parent,
Payment_Method,
COUNT(*) as Payment_Count,
SUM(Payment_Amount) as Payment_SUM
FROM payment_payment
WHERE Payment_Status = '1'
GROUP BY Payment_Parent
ORDER BY Payment_Parent ASC

Örnek Çıktı;

Payment_ParentPayment_MethodPayment_CountPayment_SUM
1N6245400.00

Mümkünmü bilmiyorum, yapılabilirse çıktının aşağıdaki gibi olmasını istiyorum;

Payment_ParentPayment_MethodPayment_CountPayment_SUM_NPayment_SUM_K
1N6225000.0020400.00

Tabi birde konu ile pekde alakalı değil ancak yeri gelmişken sormak istedim. Bu sorguyu Stored Procedure ile kullanıyorum. PHP dosyasındaki normal sorgu ile Stored Procedure arasında bir performans farkı varmı. Ben pek bir fark göremedim.

Cevap yaz
Cevaplar (3)
rephp7
793 gün önce

Sum kısmını aşağıdaki mantıkta yazıp dener misin? yalnız kontrol et hatalı yazmış olabilirim.
sum case yapısı kullanılacak sanırım. doğru olmadıysa ona göre arama yap doğru uygulamayı bulursun sanırım.

SUM(CASE

WHEN payment_method == 'N' THEN payment_amount

ELSE 0 END) AS payment_sum_N,

SUM (CASE

WHEN payment_method == 'K' THEN payment_amount

ELSE 0

END) AS payment_sum_K
orange
751 gün önce

Merhaba,

Tâbikide arada uçurum var. Stored procedure'ler prepared sorgular olduğundan query plan sadece bir kere hazırlanıyor ve cache'leniyor. Haliyle normal bir sorguyu bir milyon kere çalıştırmak ile stored procedure/prepared query çalıştırmak arasında ciddi bir performans farkı her zaman hissedilir.

jct
792 gün önce

@rephp7 desteğin için tşkler, bende aşağıdaki gibi yazmıştım

SUM(CASE WHEN Payment_Method = 'N' THEN Payment_Amount ELSE '' END) AS Payment_SUMN,
SUM(CASE WHEN Payment_Method = 'K' THEN Payment_Amount ELSE '' END) AS Payment_SUMK,

boş string yerine "0" yazmam gerekiyormuş, tekrar tşkler...