SQL konusunda bir sorgu yapmam lazım.

Kodla Büyü

EBTFÖ

Site Gezgini
Mesajlar
52
okulların duyuruları ile ilgili bir website modülü hazırlıyorum arkadaşlar.
Alanlar şunlar.
id, --->Kayıt no
kurumkodu,--> Okulun kurumkodu
baslik, --> Duyuru başlığı
anasayfa, -->Anasayfada yer alacak bölüm
okul_duyurusu, --> Okulun geniş kapsamlı duyurusu
Duyuruyu_yazan, --> Yazan kişi
tarih--> Yazilma Tarihi Date() olarak belirledim.
Yayin_Tarihi, --> Yayınlanma tarihi
sure, --> Kaç gün yayında kalacağı
Onay--> Tarafımızdan onaylanıp onaylanmadığı

Aşağıdaki sorguda onaylanmış ve yayin tarihi geçmiş olanlar yer almakta.
Select * from okul_duyuru where onay=1 and Yayin_Tarihi>=7/23/2008;

Ancak benim yapmak istediğim içice SQL, ANY veya UNION kullanarak süreyi de bu işe dahil etmek ve belirlenen süre geçtikten sonra yayından kalkacak duyuruların yayınlanmamasını sağlamak. Bunu SQL ile yapmak mümkün mü?
if else deyimlerini kullanarak yapabileceğimi biliyorum ama bunu kullanmadan SQL ile nasıl yapabiliriz. Yardımlarınızı bekliyorum.
 
programda yapasın bunu eğer access kullanıyorsan yada sql server içiçe kod yapabilirsin iç içe sql sorgusu yazarsın yalnız bildiğim kadarıyla iç.teki sorgudan sadece 1 değer getirirsin.
 
iç içe sql derken ney kastettiğinizi anlamadım hocam biraz daha açarsanız
 
3,5 ve 11 no'lu kitapların herhangi birinden kalın olan ve kitap no'su da 11'den büyük olan kitapların listesini bulalım:
SELECT kitapno, kitapad,sayfasayisi FROM Kitap WHERE sayfasayisi > ANY (SELECT sayfasayisi FROM Kitap WHERE kitapNo IN (3,5,11)) AND kitapNo>11
gibi bir sorguyla karşılaştım. İşinize yarar mı bilmiyorum hocam.
Union zaten iki select sorgusunu tek bir tabloda sonuclandırıyor. Onda ayrı ayrı select deyimleri kullanıp Union diyorsunuz yani 1. select UNION 2.select şeklinde. İki selectten aldığınız veriler tek bir tabloda gösteriliyor. Bana ANY kullanmanız daha mantıklı gibi geldi.
 
sisyphem' Alıntı:
yayın süresini gün yapmak yerine yayından kalkma adında yeni tarih alan' ı yaratırsanız çok daha güzel olur. Ve fazla kodla uğraşmazsınız.
Sorgunuzu da şu mantıkla yaparsınız.
Yayından kalkma alanı eğer bugünün tarihinden büykse yayınla. Değilse yayınlama. Eğer oraya gün ekelrseniz bu defa şunu yapmanız gerekir ki uğraşmaya gerek yok. 25.08.2008 tarihine 15 gün ekle yeni bir tarih değeri elde et. Buna gerek yok. Yayından kalkma tarihi diye bir alan ekleyin.
Buna benzer bir uygulama geliştirmiştim bu mantıkla yapmıştım.


evet en mantıklı 2 çözüm önerisi buu datediff tarzı sql hazır tarih fonksiyonlarını kullanarak direk where kısmına ekleyerek yapabilirsin ama tabloyu en uygun şekilde hazırlamak daha mantıklı yani hocamın dediği gibi yayın süresi yerine yayın bitiş tarihi daha mantıklı
 
Select * from okul_duyuru where onay=1 and Datediff(d,Yayin_Tarihi,getdate())>15

dersen istediğin sonucu alırsın ( yukarıda işlem ms sql için)
access için sorgun ise

Select * from okul_duyuru where onay=1 and Datediff('d',Yayin_Tarihi,date)>15

olacak.

kolay gelsin.

Datediff foksiyonunun kullanımında hata ile karşılaşırsan ki mysql içinde Datediff deki gün farkı parametresi değişecek, google da kullanacağın veritabanına göre mevcut örnekleri var.

Not: sorguyu her zaman kod ile olan değerlendirmeden daha iyidir. Propgram ile yapmaman doğru bir davranış olmuş.
 
togius' Alıntı:
Select * from okul_duyuru where onay=1 and Datediff(d,Yayin_Tarihi,getdate())>15

dersen istediğin sonucu alırsın ( yukarıda işlem ms sql için)
access için sorgun ise

Select * from okul_duyuru where onay=1 and Datediff('d',Yayin_Tarihi,date)>15

olacak.

kolay gelsin.

Datediff foksiyonunun kullanımında hata ile karşılaşırsan ki mysql içinde Datediff deki gün farkı parametresi değişecek, google da kullanacağın veritabanına göre mevcut örnekleri var.

Not: sorguyu her zaman kod ile olan değerlendirmeden daha iyidir. Propgram ile yapmaman doğru bir davranış olmuş.


ÇOK TEŞEKKÜRLER TOQİUS UMARIM İŞE YARAR


bshark' Alıntı:
iç içe sql derken ney kastettiğinizi anlamadım hocam biraz daha açarsanız


Sponge Bob arkadaşımızın anlattığı olay içiçe SQL olayı. Arkadaşın dediğine benzer bir örnek bende gördüm ama yukarıda bahsettiğim problemi bu şekilde çözemedim.
 
web site derken hangi ver itabanını kullanıyorsun biraz açıklama yaprsan yardımcı olabiliriz. yoksa bilgisayar için programsa onuda belirt
 
Hiç bişey anlamadım o yüzden yardımcı olamayacağım... :scared: :scared: :scared:
 
BBNET
Geri
Üst