MySQL'de Satırlardan Sütun oluşturma?

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

MySQL'de Satırlardan Sütun oluşturma?

Mesaj gönderen mbayrak » 22 Şub 2012 09:21

İyi çalışmalar
personel ve personeldetay adlı iki tablom var. Tablo yapılarım özetle şöyle:

personel
-----------
pID pAd pSoyad
1 Ali Akıllı
2 Veli Uslu

perosneldetay
------------------
pdID pdTür pdTutar pID
1 Mesai 100 1
2 Maaş 1000 1
3 Mesai 50 2
4 Maaş 2000 2
5 Avans 100 1
6 Kömür Yardımı 500 1
7 Mesai 100 1
8 Avans 200 2

Benim elde etmek istediğim sonuç ise şu şekilde:

PersonelOzet
-----------------
Personel Mesai Maaş Avans Kömür Yardımı
Ali Akıllı 200 1000 100 500
Veli Uslu 50 2000 200 0

Yani personele ait farklı kayıt türlerine göre sütun oluşturma ve tür toplamlarını (örnek: Ali Akıllı adlı personelin mesaileri 100+100=200) yazdırarak özet bir tablo almak.
Yardımcı olursanız sevinirim. Ben nette araştırdım pivot komutu ile ilgili şeyler buldum ama işin içinden çıkamadım. Şimdiden teşekkürler

Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: MySQL'de Satırlardan Sütun oluşturma?

Mesaj gönderen vkamadan » 23 Şub 2012 09:11

Merhaba ,

Kod: Tümünü seç

SELECT p.pId,p.pAd , p.pSoyad , SUM(IF(pd.pdTur="Mesai" , pd.pdTutar ,0)) as Mesai ,
SUM(IF(pd.pdTur="Maas" , pd.pdTutar ,0)) as Maas ,SUM(IF(pd.pdTur="Avans" , pd.pdTutar ,0)) as Avans ,SUM(IF(pd.pdTur="Kömür Yardımı" , pd.pdTutar ,0)) as KomurYardimi FROM personel as p
LEFT OUTER JOIN perosneldetay as pd ON p.id=pd.pID
GROUP BY p.id

şeklinde yapabilirsiniz , personel detay talobunuzun adını yanlış yazdınız sanırım ama aynen orada yadığınız gibi ekledim koda.

Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr

mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: MySQL'de Satırlardan Sütun oluşturma?

Mesaj gönderen mbayrak » 23 Şub 2012 10:20

Evt tablo adını yanlış yazmışım :) Cevabınız için çok teşekkür ederim, Sorunumu çözdü.
Fakat bunu dinamik olarak yapma imkanımız var mı onu merak ediyorum. Yani Farklı kayıt türlerine göre sütun oluşturabilmek. Örneğin distinct komutu ile çektiğimiz kayıt türlerine göre sütunları oluşturmak gibi.
Kolay gelsin.

Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: MySQL'de Satırlardan Sütun oluşturma?

Mesaj gönderen vkamadan » 23 Şub 2012 11:51

MySQL de henüz MSSQL de olduğu gibi pivod desteği yok bu yüzden dinamik olarak doğrudan MySQL den çekemezsiniz sizin örnek olarak yazdığım kodu delphi tarafında bir döngü ile hazırlamanız ve hazır olarak MySQL e vermeniz gerekir.
sonuç olarak evet yapabilirsiniz, vakit sorun olduğu için örnek yazamıyorum SUM(IF(pd.pdTur="Mesai" , pd.pdTutar ,0)) as Mesai kısmını ard arda distinc ile elde ettiğiniz sahalar için oluşturp sonuç cümleyi sorgulamanız gerekir.
Volkan KAMADAN
www.polisoft.com.tr

mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: MySQL'de Satırlardan Sütun oluşturma?

Mesaj gönderen mbayrak » 23 Şub 2012 02:47

Teşekkür ederim. Ben de delphi ile döngüleyerek yapmayı düşünüyordum, MySQLde pivot olayı olmadığını bilmiyordum öğrenmiş oldum.

Cevapla