Konuyu görüntüle
IUCODERS FORUM > Programlama > Veritabanları > Bir sql sorgusuna ihtiyacım var
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
25.08.2009-23:51 #63098
Başlığa ne yazmam gerektiğini kestiremediğim için böyle saçma bi başlık açtımbiggrin

Benim kişilerime ait telefon, adres ve e-mailleri tutan 3 tablom var. 1-n olarak tanımlılar.
Ben bir rapor içerisinde kişiadı , telefon , adres , e-mail göstermek istiyorum. Bunun için bir view oluşturacağım.

Mesela benim 4 telefonum , 1 adresim , 3 emailim olsun

Burak - tel1 - adres1 - mail1
Burak - tel1 - null - mail1
Burak - tel1 - null - mail1
Burak - tel1 - null - null

Böyle görünsün istiyorum. Bunu nasıl yapabilirim? Yada böyle saçma bişey yerine tek bir raporda nasıl tüm verileri gösterebilirimconfused







The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
25.08.2009-23:51 #63099
Veritabanından bağımsız olarak olması tercihimdirbiggrin





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
iemre


avatar
Anadolu
Kayıt: 26.05.2007
26.08.2009-00:19 #63100
select * from tablo_1 where ...
UNION
select * from tablo_2 where ...
UNİON
select * from tablo_3 where ...

bu şekilde selectlerdeki kolon sayısı eşit olacak şekilde union ile verileri başka başka tablolardan çekerek aynı tabloya atabilirsin.





More than one
Yazar
fealin


avatar

Kayıt: 30.01.2006
26.08.2009-11:09 #63105
iemre yazdi
 
select * from tablo_1 where ...
UNION
select * from tablo_2 where ...
UNİON
select * from tablo_3 where ...

bu şekilde selectlerdeki kolon sayısı eşit olacak şekilde union ile verileri başka başka tablolardan çekerek aynı tabloya atabilirsin.


eğer bir tablonda olan bir kolon başka tabloda yoksa o da şu şekildeydi sanırım mesela A ve B tablon olsun A tablonda c d e kolonları olsun B tablonda sadece d ve e kolonları olsun

Select c,d,e from A
union all
Select null,d,e from B

yanlış hatırlamıyorsam t-sqlde böyleydi sorgusu.





there is no emotion; there is peace
there is no ignorance; there is knowledge
there is no passion; there is serenity
there is no chaos; there is harmony
there is no death: there is the force
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
26.08.2009-17:52 #63108
Ben farklı tablolardaki verileri ortal columnlarda değil rowlarda göstermek istiyorum. union bu konuda işime yaramıyor.

Örnek olarak:
TEL_Tablo - tablolda 2 telefonum olsun
burak - 1212
burak - 1232

EMAIK_Tablo - tabloda 5 emailim olsun
burak - burak@burak
burak - burak1@burak
burak - burak2@burak
burak - burak3@burak
burak - burak4@burak

Ben şimdi öyle bir sorgu istiyorumki sonucu şöyle olsun

burak - 1212 - burak@burak
burak - 1232 - burak1@burak
burak - null - burak2@burak
burak - null - burak3@burak
burak - null - burak4@burak

Union ile şöyle olur bunu istemiyorum

burak - burak@burak
burak - burak1@burak
burak - burak2@burak
burak - burak3@burak
burak - burak4@burak
burak - 1212
burak - 1232







The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
iemre


avatar
Anadolu
Kayıt: 26.05.2007
26.08.2009-21:37 #63109
extreme yazdi
 
Ben farklı tablolardaki verileri ortal columnlarda değil rowlarda göstermek istiyorum. union bu konuda işime yaramıyor.

Örnek olarak:
TEL_Tablo - tablolda 2 telefonum olsun
burak - 1212
burak - 1232

EMAIK_Tablo - tabloda 5 emailim olsun
burak - burak@burak
burak - burak1@burak
burak - burak2@burak
burak - burak3@burak
burak - burak4@burak

Ben şimdi öyle bir sorgu istiyorumki sonucu şöyle olsun

burak - 1212 - burak@burak
burak - 1232 - burak1@burak
burak - null - burak2@burak
burak - null - burak3@burak
burak - null - burak4@burak

Union ile şöyle olur bunu istemiyorum

burak - burak@burak
burak - burak1@burak
burak - burak2@burak
burak - burak3@burak
burak - burak4@burak
burak - 1212
burak - 1232



Hocam senin ilk mesajından ben alt alta istediğini zannettim.Eğer ki aynı rowda olmasını istiyorum kayıtlarımın diyorsan leftjoin kullanman gerekiyor.Şimdi buraya sorgu yazmıyorum ama araştırdığın zaman hemen birsürü bulacaksın.





More than one
Yazar
mely


avatar

Kayıt: 12.05.2009
26.08.2009-21:55 #63110
select T.ad, T.tel, M.mail from TEL_Teble T inner join EMAIL_Table M on T.Ad=M.Ad where T.Ad='burak'

bu sorgu işini görür gibime geliyor. Denemek lazım. Inner join yerine left join de kullanabilirsin.





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
26.08.2009-21:58 #63111
pivot table kullanman gerekebilir
sql i dump et ver bakalım






N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
26.08.2009-22:13 #63112
@ iemre & @mely

join kullanırsam veriler çaprazlanıyor. 2 telefon 4 mail var ise 8 sonuç geliyor karşıma. Ben öyle olsun istemiyorum.

@orhan

Elimde test verisi yok gerçek veriyi verirsem yakarlar benibiggrin. Ben pivot tablo neymiş araştırayım.

Teşekkürler





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
hazakli


avatar
Istanbul
Kayıt: 19.01.2007
27.08.2009-10:01 #63113
Eğer fonksiyon yazabileceğin bir veritabanı kullanıyorsan bu şekilde halledebilirsin.

"select name, get_email(id) email, get_adres(id) adres, get_tel(id) telefon from table_name" gibi.





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
07.10.2009-10:31 #63785
Şimdide farklı bi sorguya ihtiyacım varbiggrin.
Şimdi bir view'im var kişileri ve yıllara göre maaşlarını alıyorum

"Akişisi" - 2007 - 500
"Akişisi" - 2008 - 1000
"Akişisi" - 2009 - 1200

gibi olsun. Ben 4. bir sütunda artış oranlarını göstermek istiyorum


"Akişisi" - 2007 - 500 - 0
"Akişisi" - 2008 - 1000 - 100
"Akişisi" - 2009 - 1200 - 20

Gibi. Bunu nasıl yapabilirim?





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
07.10.2009-10:54 #63786
Bide şöyle bi sorum olacak. Ben bir sorguda yılları alıyorum. Bu yılları sorgu içerisinde datetime'a nasıl çevirebilirim. Ama yıl 2009 ise 01.09.2009 yani eylülün ilk günü olmalı.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
iemre


avatar
Anadolu
Kayıt: 26.05.2007
07.10.2009-14:34 #63787
extreme yazdi
 
Bide şöyle bi sorum olacak. Ben bir sorguda yılları alıyorum. Bu yılları sorgu içerisinde datetime'a nasıl çevirebilirim. Ama yıl 2009 ise 01.09.2009 yani eylülün ilk günü olmalı.


convert(varchar,getdate(),.....)

Burada .. ile belitttiğim kısımda çeşitli tarih formatları mevcut 102,106,108,112,120 gibi bunları bi araştırmalısın ilk önce.Ona göre istediğini yapabilirsin.





More than one
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
07.10.2009-14:49 #63788
iemre yazdi
 
extreme yazdi
 
Bide şöyle bi sorum olacak. Ben bir sorguda yılları alıyorum. Bu yılları sorgu içerisinde datetime'a nasıl çevirebilirim. Ama yıl 2009 ise 01.09.2009 yani eylülün ilk günü olmalı.


convert(varchar,getdate(),.....)

Burada .. ile belitttiğim kısımda çeşitli tarih formatları mevcut 102,106,108,112,120 gibi bunları bi araştırmalısın ilk önce.Ona göre istediğini yapabilirsin.


Bu şekilde oldu teşekkür ederimhugs





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb