mysql de iç içe select olayı

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

mysql de iç içe select olayı

Mesaj gönderen denizfatihi »

Merhaba,

Aşağıdaki sql için parametre olarak verdiğim tarihinde ('2014-07-30') ek sütun halinde göstermek mümkün müdür ?

Kod: Tümünü seç

SELECT p.id, p.ad, p.soyad
FROM personel p
WHERE p.id NOT IN 
(SELECT gc.personelid FROM gc_giriscikis gc 
where 
gc.giristarihi = '2014-07-30' )
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: mysql de iç içe select olayı

Mesaj gönderen vkamadan »

Merhaba ,

Kod: Tümünü seç

SELECT p.id, p.ad, p.soyad , CAST('2014-07-30' AS DATE) as giristarihi
FROM personel p
WHERE p.id NOT IN 
(SELECT gc.personelid FROM gc_giriscikis gc 
where 
gc.giristarihi = '2014-07-30' )
Volkan KAMADAN
www.polisoft.com.tr
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: mysql de iç içe select olayı

Mesaj gönderen denizfatihi »

öncelikle teşekür ederim.
Dün akşam soru soararken aceleye geldi, sorunu tam olarak açıklama imkanım olmadı,
sorun şu normalde sonuç 3 sütun olarak dönerken 4.sütuna parametre tarihi yazdırmak istiyorum ama ilgili parametre her seferinde değişken bir tarih olacağı için sorgu sonucunda direkt olarak gelmesini nasıl sağlarım.

Kod: Tümünü seç

SELECT p.id, p.ad, p.soyad , CAST('2014-07-30' AS DATE) as giristarihi
FROM personel p
WHERE p.id NOT IN
(SELECT gc.personelid FROM gc_giriscikis gc
where
gc.giristarihi = '2014-07-30' )
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: mysql de iç içe select olayı

Mesaj gönderen vkamadan »

Tekrar merhaba ,
ilgili sütun için değeri parametre geçerek te kullanabilirsiniz ,

Kod: Tümünü seç

SELECT p.id, p.ad, p.soyad , CAST(:tarih AS DATE) as giristarihi
FROM personel p
WHERE p.id NOT IN
(SELECT gc.personelid FROM gc_giriscikis gc
where
gc.giristarihi = :tarih)
gibi..
Volkan KAMADAN
www.polisoft.com.tr
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: mysql de iç içe select olayı

Mesaj gönderen denizfatihi »

Çok teşşekkür ederim, tam istediğim gibi oldu.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: mysql de iç içe select olayı

Mesaj gönderen denizfatihi »

Ek olarak birşey daha sormak istiyorum,
aşağıdaki sorguda giriş ve çıkış tarihleri arasında örneğin 01.08.2014 tarihinde personel izinli olsa
değer boş geleceği için bir işaretleme tarsı uygulama nasıl yapılabilir ?

Kod: Tümünü seç

select iz.personelid,iz.giristarihi, iz.cikistarihi FROM pts_izin iz where iz.giristarihi between '2014-07-26' and '2014-08-06' 
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: mysql de iç içe select olayı

Mesaj gönderen vkamadan »

Merhaba ,
örneği biraz daha açabilirmisiniz ,
ilgili sorguda dönen kayıtlar içinde belli kritere uyanları işaretlemekten bahsediyorsanız IF() deyimi kullanabilirsiniz eğer yanlış anladıysam düzeltin lütfen ,
örneğin personelin izinli olduğu tarihlerde iz.giristarihi ve iz.cikistarihi sahaları NULL dönüyor olsun bu durumda iki saha da NULL dönüyorsa izinli adında sanal bir sahaya 1 diğer durumda 0 değerini verecek bir deyim aşağıdaki gibi olabilir,

Kod: Tümünü seç

select iz.personelid,iz.giristarihi, iz.cikistarihi , IF(isnull(iz.giristarihi)=1 AND isnull(iz.cikistarihi)=1 , 1 , 0) as izinli FROM pts_izin iz where iz.giristarihi between '2014-07-26' and '2014-08-06'
Volkan KAMADAN
www.polisoft.com.tr
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: mysql de iç içe select olayı

Mesaj gönderen denizfatihi »

Merhaba,

Anlatım esnasında eksik anlattım yapmak istediğimi tam olarak şu 01.08.2014 ve 06.08.2014 tarihleri arasında personel izinli olsa nasıl bir sorgu ile başlangıç, bitiş aynı zamanda aradaki kalan günleri ortaya çıkarabilirim. Normalde arada kalan günler kayıtlı olmadığı için, ama var olduğunu düşününce sanal da olsa nasıl oluşturulabilir ?

izin başlangıç tarihi izin bitiş tarihi arada kalan günler
01.08.2014 06.08.2014 02.08.2014, 03.08.2014, 04.08.2014, 05.08.2014
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: mysql de iç içe select olayı

Mesaj gönderen vkamadan »

merhaba ,
anladım , korkarım bu belirttiğiniz sonucu verebilecek pratik bir yapı yok öncesinde bir SP ile databasede bir temp tabloda tespit ettiğiniz boş günleri geçici olarak oluşturup sorgunuzu ilgili tabloyla UNION ile birleştirerek almanız gerekir.
Volkan KAMADAN
www.polisoft.com.tr
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: mysql de iç içe select olayı

Mesaj gönderen denizfatihi »

Merhaba,
Kusura bakmayın ara ara yazıyorum ama yoğunluktan teşekkür etme fırsatım olmadı, son verdiğiniz fikirle işimi çözdüm çok teşekkür ederim.
Cevapla