Kategoriler
Teknik

SQL’de Gün İçindeki/Bugüne Ait Kayıtları Listelemek

SQL’de gün içindeki kayıtları listelemek için şöyle bir sorgu gerekiyor:

SELECT * FROM kayitlar WHERE DATE(tarih) = CURDATE();

Bu sorgu, o gün içindeki kayıtları listeliyor. Yani bugün ayın 5’i ise, 5’inde girilen kayıtları gösteriyor.

Bir diğer kullanım ise, son bir günlük kayıtları göstermek. Sorguyu inceleyelim:

SELECT * FROM kayitlar WHERE tarih > DATE_SUB(CURDATE(), INTERVAL 1 DAY);

Bu sorguda son bir gün, yani 24 saatlik kayıtları listeliyor. 1 DAY yazan yeri 1 WEEK yaparak bir haftalık kayıtları, 1 MONTH yazarak son bir aylık kayıtları alabiliyoruz.

Ya da alternatif olarak aşağıdaki sorgu işimizi görebilir:

SELECT * FROM kayitlar 
WHERE tarih >= CURDATE()
  AND tarih < CURDATE() + INTERVAL 1 DAY
ORDER BY tarih;
Kategoriler
Teknik

Veritabanındaki Tablonun Varlığını Kontrol Etmek

PHP’de PDO ile çalışırken bir tablonun var olup olmadığını kontrol etmek için aşağıdaki yöntem kullanılabilir:

public function checkTable()
{
  try {
    return $this->fetchRow('SELECT * FROM posta');
  } catch(Exception $e) {
    return false;
    // Veya $this->exec('CREATE TABLE IF NOT EXISTS posta ...');
  }
}

Bir kurulum aşamasında, veritabanındaki tabloları yapılandırma sırasında işe yarayabilir.

Kategoriler
Teknik

Many to Many İlişki Tipi

Veritabanında birden fazla veriyi birden fazla veriye ilişkilendirmek için Many To Many Relationship diye bir yöntem var. Türkçe manası da herhale Çoktan çoğa ilişki tipidir. Bu yönteme bir blog sisteminde ihtiyaç duydum. Bir blog gönderisine bir kategori tanımlamak daha önceden yaptığım bir işti. Ama Bir gönderiye birden fazla kategori tanımlamak istediğimde bu tarz bi yönteme başvurmak gerektiğini öğrendim.

Bir gonderi tablomuz olsun, içerisinde id, baslik, govde alanları olduğunu varsayalım. Bir de kategori tablomuz olsun, içindeki alanlarsa id, adi, aciklama olsun.

Bu noktada her şey tamam. Şimdi yapmamız gereken bu iki tablodaki verileri ilişkilendirmek olacak. Önceden gönderiyi bir kategoriyle ilişkilendirmek için gönderi tablosunda kategori_id adlı bir alan oluşturup gönderinin ait olduğu kategorinin ID‘sini eklerdik. Ama birden fazla kategori tanımlamak istenildiğinde bu durum yapılamıyordu. Şimdi, bu durumun üstesinden gelebilmek için hangi gönderi ve kategorilerin hangisiyle ilişkili olduğunu tutabileceğimiz bir tablo oluşturacağız. Tablonun adı gonderi_kategori olsun. İçerisindeki alanlar ise id, gonderi_id, kategori_id olsun. Görsel olarak şöyle:

1 numaralı gönderi, 2 ve 3 numaralı kategoriyle ilişkilendirildiğinde, gonderi_kategori tablosuna iki satır eklenir. Yani şöyle:

id gonderi_id kategori_id
1 1 2
2 1 3

Daha sonra uygulamalı bir örnekte görüşmek üzere diyelim.