Group By Having Nasıl Kullanılır

Varsayalım elimizde Türkiye’nin bir ilçe tablosu olsun ve bu ilçelerden aynı isme sahip olanları sayılarıyla bulmamız istensin. Bu durumda nasıl bir SQL yazmamız gerekir? İlk akla gelen

GROUP BY ... HAVING COUNT(*) > 1

SQL cümleciği. Ama bir dakika! MapInfo maalesef HAVING yapısını desteklemiyor. (En azından 9.5 sürümüne kadar böyle.) Peki having kullanmadan tekrar eden ilçe isimlerini nasıl bulacağız?

Adım adım gidelim. Öncelikle her bir ilçeden kaç tane olduğunu bulalım:

SELECT ILCE_ADI, COUNT(*) FROM ILCE GROUP BY ILCE_ADI INTO GRUPLU

SQL i ile ilçelerimizi adlarına göre gruplayarak sayılarını alıyoruz. Dolayısıyla GRUPLU selection tablomuzda tüm ilçelerden kaçar tane olduğunu bulmuş olduk. Ama bizim amacımız adı birden fazla geçen ilçeleri bulmak olduğundan GRUPLU tablosu üzerinden bir selection daha yapmamız gerekiyor:

SELECT * FROM GRUPLU WHERE COL2 > 1 INTO MUKERRER_ILCELER ORDER BY ILCE_ADI

Bu SQL ile de COL2 yani COUNT(*) değeri 1 den büyük kayıtları seçmiş olduk. Bunlar da bize aradığımız sonucu vermiş oluyor.

Son olarak, seçimi browser penceresinde görmek için:

BROWSE * FROM MUKERRER_ILCELER

yazalım.

Toparlarsak, mükerrer ilçeleri bulmak için MapInfo’nun MapBasic penceresini açın ve aşağıdaki 3 satırı yapıştırın. Sırasıyla her satırda Enter a basarak komutları çalıştırın:

SELECT ILCE_ADI, COUNT(*) FROM ILCE GROUP BY ILCE_ADI INTO GRUPLU
SELECT * FROM GRUPLU WHERE COL2 > 1 INTO MUKERRER_ILCELER ORDER BY ILCE_ADI
BROWSE * FROM MUKERRER_ILCELER

Sonuç aşağıdaki gibi olacaktır:

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: