SQL' de İlişkili Tablolardan Kayıt Sayısı Bulmak

Birbiriyle ilişkisi olan iki tablonuz var. Birisi markalar diğeri modeller varsayalım.

Birbiriyle ilişkisi olan iki tablonuz var. Birisi markalar diğeri modeller varsayalım. Bir marka içinde kaç model olduğunu tek SQL sorgusu yaparak hesaplamak istiyorsunuz. Tablo yapımız şu şekilde olsun:

TABLO 1
-------------------
ID - MARKA
1 - FORD
2 - TOFAŞ
3 - VW

TABLO 2
---------------------
ID - MID - URUN
1 - 1 - MUSSTANG
2 - 1 - FIESTA
3 - 1 - CONNECT
4 - 2 - ŞAHİN
5 - 3 - GOLF
6 - 2 - DOBLO

Burada Tablo2'deki MID alanı Tablo1'deki ID ile ilişkilidir. Örneğin Tablo2 6 numaralı ID Doblo model arabamızın MID değeri 2'dir. Tablo1'de 2 numaralı ID'ye baktığımızda markanın TOFAŞ olduğunu görüyoruz. Şimdi hangi markadan kaç adet model olduğunu tek ve pratik bir sorguyla bulabiliriz. Sorgu içinde sorgu zahmetine son ! :)


SELECT marka, (select count(ID) from tablo2 where tablo2.MID=tablo1.ID

limit 1) AS marka_sayisi FROM tablo1 ORDER BY marka_sayisi DESC



Yalnız belirtmek isterim ki; bu işlem sitenizi yoracaktır. En mantıklısı tablo1 yani markalar tablosunda "model_sayisi" adında alan oluşturup her model ekleme ve silmede o alanı artırıp azaltmanız hem kod kalabalığı açısından hemde sitenin yorulmaması açısından daha sağlıklı olacaktır.

Kolay gelsin.
  • Etiketler;
Abdullah Tekin
PHP, Ajax ve JQuery'e son derece hakim bir programcı olarak bazı firma ve kuruluşlara aşağıdaki konular dahilinde freelance olarak hizmet veriyor: - Daima web standartlarını, SEO (Arama Motoru Optimizasyonu) ve güvenlik önlemlerini içeren projeler gerçekleştirmek, - Tasarımı yapılmış web sitelerini kusursuz bir şekilde web'e uyarlamak, - Özgün ve kodları kendisi tarafından yazılabilen PHP+Jquery+Ajax destekli modüller hazırlamak - Web stratejileri oluşturulması, - Web dahilinde sistemler kurmak, - Kontrol panelleri hazırlamak, - Hızlı, kullanılabilir, erişilir ve güvenliği üst düzeyde olabilecek web siteleri alt yapısını oluşturmak. İçerik Yönetim Sistemi (CMS), Haber Sistemi, E-Ticaret ve Okul Yönetim projelerini içine alan PHP konusundaki birikimlerini burada Sanalkurs.net üyelerine aktarıyor ve aynı zamanda Sanalkurs'un yazılım altyapısını şu an en üst düzeye taşımak için gece gündüz kodlarla boğuşuyor.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Bu tür işlemlerde çok rahat MsSQL Server 2005'i tavsiye ediyorum :) Bu tür işlemler ve daha gelişmişleri çok rahat yapılabilmektedir. Üzerinde soru işaretleri olan bir konuydu. Makale yazman iyi olmuş. İyi Çalışmalar.
Evet MsSQL Server yada alternatif MySQL Maestro gibi programlarla çok pratik yapabilirsiniz ancak ben öğrenme aşamasında buna karşıyım. İlk önce bu şekilde mantık öğrenilir daha sonra pratiğe geçilir. Hiç bir bilgisayar kursunda size mantığı öğretmeden programı kullanmayı öğretmezler.
ben şöyle düşündüm; [code]SELECT marka, count(mid) FROM tablo1, tablo2 WHERE tablo1.id = tablo2.mid GROUP BY tablo2.mid;[/code] bu şekilde daha anlaşılır bence.
group by kullanarak tek bir select ile de yapılabilir.
Peki bu sayıyı ekrana nasıl yazdırabiliriz acaba
crawler yazdığın kod çok işime yaradı teşekkür ederim.
merhaba hocam peki bu tablolara veri girmeyide anlatırmısınız
eline sağlık abi faydalı bir ders olmuş teşekkürler :)

Yukarı Git