between ?????????

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
digitdigitman
Üye
Mesajlar: 32
Kayıt: 04 May 2014 02:23

between ?????????

Mesaj gönderen digitdigitman »

arkadaşlar mqqsl bölümüne birkaç sorun yazdım ama görüntülenme sayısı bile buradakilerden az. bu yüzden doğru olmadığı halde sorumu buraya yazmak istedim

2 tane tablom var
birinci tabloda saat,sınıf,gün,ogretmen alanları (bu tablodaki kayıt sayısı 10.000 üzerinde)
2. tabloda da saat1,saat2,öğretmen,sınıf,gün alanlarım var buradaki kayıt sayısıda en fazla 100-150

yapmak istediğim şey birinci tabloda bulunan saat alanındaki verileri ikinci tabloda bulunan her kaydın aralığına göre silmek

yani türkçesi

delete from tablo1 where saat between tablo2.saat1 and tablo2.saat2 and tablo1 deki öğretmen tablo2 deki öğretmenle anyı ve
tablo1 deki sınıf tablo2 deki ile aynı ve tablo1 deki gün tablo2 deki gün ile aynı olanlar
(not:tablo2 deki diğer kontrol verileride saat1 ve saat2 ile aynı kayıt içerisinde)

ama tablo2 de bulunan her kaydın saat1 i ile saat2 si farklı saatler de başlayıp bitiyor

yardımlarınız için teşekkürler
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: between ?????????

Mesaj gönderen omurolmez »

Önce silmek istediğiniz kayıtlar için select sorgusu hazırlayın.

select ... from table1 t inner join table2 t on table1.ogretmen=table2.ogretmen and table1.saat between table2.saat1 and table2.saat2 ...

daha sonra bu select sorgusunu subselect haline getirin ve delete from table1 t where t.key_alan in (subselect)

delete from table1 t
where t.ogretmen in
(select t.ogretmen from table1 t inner join table2 t on table1.ogretmen=table2.ogretmen and table1.saat between table2.saat1 and table2.saat2 ...)

ogretmen, saat, saat1 ve saat2 alanlarına indeks ekleyin. Hatta indeksin kullanılabilmesi için between yerine saat>=saat1 and saat<=saat2 deneyebilirsiniz.
Ömür Ölmez
Cevapla