Bilmek istediğin her şeye ulaş

Döngü içinde Sql sorgusu kullanmamak için bir yöntem var mıdır?

Sql sorgusundan aldığım verileri bir döngüde listelerken, her verinin bir özelliği için başka bir tablodan tekrar bir sorgu çalıştırmam gerektiği durumlarda, döngü içinde sql kullanmadan bunu yapabileceğim bir yöntem var mıdır?Düzenle
- INNER JOIN, LEFT JOIN kullanarak diğer verileri de aynı sorgu içerisinde çekebilirsin. Tabii bu durumda diğer veriler ile asıl veri arasında "bire çok" şeklinde bir ilişkisi varsa, asıl veriye ait satırlar çoğalacaktır. Satırları kod içerisinde gruplamak gerekecektir.

- "Döngü içinde yeni sorgu çalıştırmamak gerekir" yaklaşımı da aslında ikinci sorgunun nasıl çağırıldığı ile alakalıdır biraz... Aslında sanılanın tersine; eğer tek bir SQL bağlantısı açılıp, bağlantı açık tutulur ve bu bağlantı üzerinden arka arkaya veri sorgulanırsa ciddi bir sıkıntı yaşanmayacaktır.

- Aslında günümüz şartlarında, SQL diline artık hiç bulaşmamak, kullanılan programlama dili için Object Relational veya NoSQL modellerini sağlayacak eklentileri kullanmak da doğru bir yaklaşımdır.
  • Paylaş
Her döngü içerisinde ayrı ayrı sorgu yapmak, kullanılan kaynakların gereksiz yere artması anlamına gelir. Bazı durumlarda kaçınılmaz olabilir ancak ilk aşamada gerekli bütün verileri tek bir sorguda çağırmak sistem kaynakları ve hız anlamında önemlidir.

Dolayısıyla, ilk sorgunuzda Inner Join kullanarak tabloları bağlayabilirsiniz. LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN gibi kullanımları da var ancak yapılması gereken işe göre performansı oldukça düşürebilirler.

Örnek:

SELECT a.paymentAmount , a.paymentDate , b.userID, b.userName
FROM Payments a
INNER JOIN Users b ON b.userID=a.userID AND b.userOnay=1
WHERE a.paymentAmount > 100
ORDER BY b.userName ASC;

Yukarıdaki sorgu, Payment tablosundaki ödemeler içinden, ödeme tutarı 100 TL'den fazla olan değerlerle birlikte, ödemeyi yapan kullanıcının bilgilerini, kullanıcı adını a'dan z'ye sıralayacak şekilde çeker.

Tablolar şu şekilde olabilir:

Payments
paymentID, userID, paymentAmount, paymentDate

Users
userID, userName, userOnay
  • Paylaş
Sonraki Soru
HESAP OLUŞTUR

İstatistikler

1333 Görüntülenme5 Takipçi2 Yanıt