Join yada Union Ama Nasıl ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Necatiozbek
Üye
Mesajlar: 24
Kayıt: 23 Eki 2006 06:33

Join yada Union Ama Nasıl ?

Mesaj gönderen Necatiozbek »

Arkadaşlar herkese kolay gelsin ;
Adres Defteri Gibi bir şey düşünün.Kurumlara ait kayıtlar bir tabloda, Kişilere ait kayıtlar başka bir tabloda tutuluyor.İkisini birleştirip tek bir gridde kullanıcıya gösterilmesi gerekiyor ve Kişilere ait tabloda örneğin KişiId= alanına kurumsal bir kaydın IDsi girildiğinde o kaydın son kullanımda-listelemede Kurumsal kaydın altında gözükmesi gerekiyor.Join veya union gibi çeşitli seçeneklerle tabloları birleştirdim ama ortaya çıkan sonuç istediğim gibi olmadı maalesef..

Örneğin şöyle bir sorgu yazmıştım :

Kod: Tümünü seç

AdoQuery1.Close;
AdoQuery1.Sql.Clear;
AdoQuery1.Sql.Add('select ID,KUNVAN,KTELEFON1,KTELEFON2,KFAX from KURUMLAR'); //Kurum kaydınıda görebilmek için önce kurumTablosundan çekiyorum
AdoQuery1.Sql.Add('Union');
AdoQuery1.Sql.Add(' select Kurumlar.ID,Kurumlar.Unvan,Kisiler.KurumID,Kisiler.Adı,Kisiler.Soyadı From Kurumlar Left Join Kisiler On Kurumlar.Id=Kisiler.KurumId');
AdoQuery1.Open;
Ama böyle bir sorgudan gridde şöyle bir sonuç dönüyor.
İlk Satırda evet Kurum Ünvanı Telefonu vs.
ikinci satırda bu kuruma bağlanmış bir çalışan-Kişi kaydı.Mantık doğru,çıktı doğru , ama görüntü yanlış. Çünkü Kuruma Bağlanmış kişi-çalışanın isminden önce kurum ismi de listeleniyor.. Bu eğer o kuruma 15 kişi bağlanmışsa Gridin FirmaÜnvan alanında 15 tane aynı firma ünvanı ismi demek oluyorki çok çirkin bir görüntü.. Bunu aşabileceğim bir yöntem varmı?

Şu Şekilde Bir Çıktı Yakalamam mümkün mü ? Tablo yapısına vs bir alan vs eklemem gerekli mi ?

FirmaÜnvanı Telefon1 Telefon2 KişiAdıSoaydı EvTelefon CepTelefon
Örnek1 AŞ------ **** ----- ****
----------------------------------------ÖrnekKişi----- ***----------*** //Örnek1 AŞ ye bağlanmış 1ci Kişi
----------------------------------------ÖrnekKişi------***----------*** //Örnek1 AŞ ye bağlanmış 2ci Kişi
Örnek2 AŞ------ **** ----- ****
Örnek3 AŞ------ **** ----- ****
----------------------------------------ÖrnekKişi------***----------*** //Örnek3 AŞ ye bağlanmış 2ci Kişi
----------------------------------------ÖrnekKişi------***----------*** //Hiç bir kuruma bağlanmamış kişi

Sanırım Biraz uzun oldu ama umarım derdimi anlatabilmişimdir.
Yardımlarınız için şimdiden teşekkür ederim..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Join yada Union Ama Nasıl ?

Mesaj gönderen sabanakman »

Hangi veritabanını kullandığın önemli ve belirtmemişsin ama SQL Server için önerebileceğim bir sorgu.

Kod: Tümünü seç

select ID,KUNVAN,KTELEFON1,KTELEFON2,KFAX,cast(Null as Nvarchar(50)) as Adi,cast(Null as Nvarchar(50)) as Soyadi from KURUMLAR
union
select KurumID,Null,Evtel,Ceptel,Null,Adi,Soyadi From Kisiler
order by 1
İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Necatiozbek
Üye
Mesajlar: 24
Kayıt: 23 Eki 2006 06:33

Re: Join yada Union Ama Nasıl ?

Mesaj gönderen Necatiozbek »

Basit 2 tablo olacağı ve birazda deneme yapmış olmak için Access veritabanını kullandım..Şimdilik belkide.
Genelde projelerimde Firebird veritabanını kullanıyorum..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Join yada Union Ama Nasıl ?

Mesaj gönderen sabanakman »

Bunlarda "order by 1" kodunun çalışmasını destekler ve bu satırı ekleyerek ID alanının sıralanmasını sağlamalısın.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla