Gruplama hakkinda bir soru..

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Gruplama hakkinda bir soru..

Mesaj gönderen Glen »

Selam arkadaslar, basliga ne yazacagimi bulamadim cunku sorunumun ismini ben de tam olark bilmiyorum. Herneyse lafi fazla uzatmadan soruma geciyim.. biraz karışık

2 Tane Table dusunun ISIM, STATU diye..

Isim tablosunun yapisi : ID, AdSoyad
Statu Tablosu: ISIMID, DURUM

Statu Tablosu:

ISIMID ... DURUM
---------------------
1 ............... 0
1 ............... 1
1 ............... 7
2 ............... 0
3 ............... 0
3 ............... 5
4 ............... 0

Isim Tablosu:

ID ..... ADSOYAD
---------------------
1 ....... Ahmet Yılmaz
2 ....... Onur Demir
3 ....... Ali Kaya
4 ....... Mehmet Çalı



olduğunu düşünelim..

Şimdi öyle bir şey yapmak istiyorum ki, Maksimum Durumu 0 olan yani 0 dan baska kaydi olmayan Isim ID lerini alsın yanina da Adini Soyadini ISIM tablosundan getirsin..

Maksimum Durumu 0 olan kayitlari şöyle getirdim.

SELECT ID
FROM STATU
GROUP BY ISIMID
HAVING (MAX(DURUM) = 0)

Yani Sonuç:
2
4

Çünkü sadece 2 ve 4 kayitlarinin Maksimum Durumu 0 a eşit..

Ancak yanina isimlerinii bir türlü getiremedim çünkü Joinleri kullanamiyorum hata veriyor :(

Kolay gelsin.
En son Glen tarafından 17 Tem 2006 06:56 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Bu arada boşlukları kullanamiyorum en fazla 1 boşluk kullanmama izin veriyor mesaj bu yüzden

....... ile ayirdim tablolari umarim anlasilir olmustur.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Kod: Tümünü seç

SELECT ID, ADSOYAD
FROM STATU
GROUP BY ISIMID,ADSOYAD
HAVING (MAX(DURUM) = 0)
Saygılarımla
Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Sanirim bir yanlis anlasilma var

STATU tablosu: ISIMID, DURUM
Isim Tablosu: ID, ADSOYAD

Yani bunlar farkli tablolar yukarida yazmistim. Ancak yalnis anlamaniz dogal cunku tablo cizerken yan yana yazdgim icin sanki ayni tabloymus gibi gozukuyordu şimdi düzelttim..

Sorunum devam ediyor
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

İki farklı çözüm:

Kod: Tümünü seç

1.

SELECT
  T1.ISIMID AS ID,
  (SELECT T2.ADSOYAD FROM ISIM T2 WHERE T2.ID = T1.ISIMID) AS ADSOYAD
FROM STATU T1
GROUP BY T1.ISIMID
HAVING MAX(T1.DURUM) = 0



2.

SELECT
  T1.ID,
  T2.ADSOYAD
FROM
(
 SELECT
   ISIMID AS ID
 FROM STATU
 GROUP BY ISIMID
 HAVING MAX(DURUM) = 0
 ) T1
  INNER JOIN ISIM T2 ON T2.ID = T1.ID
İyi çalışmalar.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Hakan Can yazdı:İki farklı çözüm:

Kod: Tümünü seç

1.

SELECT
  T1.ISIMID AS ID,
  (SELECT T2.ADSOYAD FROM ISIM T2 WHERE T2.ID = T1.ISIMID) AS ADSOYAD
FROM STATU T1
GROUP BY T1.ISIMID
HAVING MAX(T1.DURUM) = 0



2.

SELECT
  T1.ID,
  T2.ADSOYAD
FROM
(
 SELECT
   ISIMID AS ID
 FROM STATU
 GROUP BY ISIMID
 HAVING MAX(DURUM) = 0
 ) T1
  INNER JOIN ISIM T2 ON T2.ID = T1.ID
İyi çalışmalar.
Hakan bey anca deneme fırsatım oldu teşekkür ederim yardımınız için, cevabımın gecikmesinden dolayı kusura bakmayın..

Kolay gelsin
Cevapla