- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Veritabanından çekilen kayıtlar, genellikle eklenme sırasına göre gelir. Ancak bir e-ticaret sitesinde ürünleri fiyata göre, bir müşteri listesinde ise isimlere göre alfabetik olarak sıralamak isteriz. SQL'de bu sıralama işlemi, ORDER BY komutu ile yapılır. Bu bölümde, musteriler tablosundaki kayıtları isimlerine göre alfabetik olarak nasıl sıralayacağımızı ve bu sıralamanın yönünü (artan veya azalan) nasıl belirleyeceğimizi göreceğiz. Yeni bir Python dosyası oluşturalım (Örneğin: order_by_data.py) ve başlayalım.
import mysql.connector
from config import DB_CONFIG
try:
# 1. Veritabanına Bağlanma
mydb = mysql.connector.connect(**DB_CONFIG)
mycurser = mydb.cursor()
# 2. Temel SELECT Sorgusu
SELECT_SQL = "SELECT * FROM musteriler"
# 3. Sıralama Sorgusunu Oluşturma (ORDER BY)
# ORDER BY isim: 'isim' sütununa göre sırala
# ASC: Artan (Alfabetik A'dan Z'ye veya küçükten büyüğe)
# sıralama yap.
ORDER_BY_ISIM_ASC_SQL = f"{SELECT_SQL} ORDER BY isim ASC"
# 4. Sorguyu Çalıştırma
mycurser.execute(ORDER_BY_ISIM_ASC_SQL)
# 5. Sonuçları Çekme
isim_sirali = mycurser.fetchall()
# 6. Sıralanmış Veriyi Yazdırma
print("\n--- 1. İSME GÖRE A-Z (Artan) SIRALAMA ---")
for kayit in isim_sirali:
# Tuple elemanlarını ekrana yazdır
print(f"ID: {kayit[0]} İsim: {kayit[1]} Email: {kayit[2]} Kayıt Tarihi: {kayit[3]}")
# --------------------------------------------------------------
# Ek Örnek: Tarihe Göre AZALAN (DESC) Sıralama
# --------------------------------------------------------------
# DESC: Azalan (Z'den A'ya veya büyükten küçüğe,
# yani en yeni tarih en başta) sıralama yap.
#ORDER_BY_TARIH_DESC_SQL=f"{SELECT_SQL}ORDER BY kayit_tarihi DESC"
#mycurser.execute(ORDER_BY_TARIH_DESC_SQL)
#tarih_sirali = mycurser.fetchall()
#print("\n--- 2. KAYIT TARİHİNE GÖRE YENİDEN ESKİYE (Azalan)
# SIRALAMA ---")
#for kayit in tarih_sirali:
# print(f"ID: {kayit[0]} İsim: {kayit[1]} Kayıt Tarihi:
# {kayit[3]}")
except mysql.connector.Error as err:
# Tablo var mı yok mu kontrolü ve diğer hataları yakalama
if err.errno == 1050:
print("Tablo zaten mevcut.")
else:
print(f"Bağlantı hatası: {err}")
print("Lütfen bağlantı ayarlarını kontrol edin.")
finally:
# Bağlantıları kapatma
if 'mycurser' in locals() and mycurser:
mycurser.close()
if 'mydb' in locals() and mydb and mydb.is_connected():
mydb.close()
print("MySQL bağlantısı kapatıldı.")
Bu kod bloğu, veritabanından veri çekerken sonuç kümesini belirli bir kritere göre düzenlemeyi gösterir.
Temel Sorgunun Hazırlanması: Önce SELECT * FROM musteriler şeklinde temel sorgu tanımlanır.
ORDER BY Komutunun Eklenmesi: Sıralama işlemi, temel SELECT sorgusunun sonuna ORDER BY ifadesi eklenerek yapılır:
ORDER BY isim ASC: Bu ifade, sonuçları isim sütunundaki değerlere göre sıralar.
ASC (Ascending): Artan anlamına gelir. Metinler için alfabetik (A'dan Z'ye), sayılar ve tarihler için küçükten büyüğe sıralama yapar. (Bu, varsayılan sıralamadır, belirtilmese de ASC kabul edilir.)
DESC (Descending): Azalan anlamına gelir. Metinler için Z'den A'ya, sayılar ve tarihler için büyükten küçüğe (yani en yeni kayıt en başta) sıralama yapar.
Sorgunun Çalıştırılması: Oluşturulan sıralama sorgusu (ORDER_BY_ISIM_ASC_SQL), mycurser.execute() metodu ile çalıştırılır ve sonuçlar mycurser.fetchall() ile alınır.
Veriyi Yazdırma: Alınan kayıt listesi (isim_sirali), bir for döngüsü ile dolaşılır ve her bir kaydın sütun değerleri ekrana düzenli bir şekilde yazdırılır.
Bu yöntem, raporlama ve listeleme ekranlarında kullanıcı deneyimini iyileştirmek için hayati öneme sahiptir.
Yorumlar
Yorum Gönder