From: Erkin Tek (erkintek@fotograf.web.tr)
Date: Tue 15 May 2007 - 11:08:31 EEST
Selam,
4 tane tablom var:
isci = id, bolum, deptartman
egitim = id, adı, kodu, expiredate
bge = bolum, departman, egitim
isci_taken = isci, given
egitim_given = id, egitim, tarih, veren, aciklama
şimdi iki bağımsız tablo var işçi ve eğitim. Bunlar tanımları tutuyolar.
bge bolumler ve departmanlara atadigimiz egitimleri tutuyo
isci_taken iscilerin verilen hangi egitimlere katıldığını hatırlıyo
egitim_given ise verilen egitimleri tutuyo
şimdi bir sorguda işçilerimizin bge'den kaynaklanan almaları gereken
egitimleri, ve isci_given'da hatırlanan hangi eğitimleri aldıklarını (exprity
date'ide göz önüne alarak) bir sorgu döşedim ki left join kısmısında (e tabi
adama eğitim verilmemiş olabilir! dolayısiyle taken null getirdiğinde bizim
kırmızı kımızı gözlerine sokmamız için) üç tane tabloyu sokuşturmam gerekiyor
my dedik bağrımıza bastık ama izin vermiyo ki.
select isci.id, null, bge.egitim
from
isci, given, bge
left join
taken
on
((bge.egitim=given.egitim && (taken.egitim=given.id)) &&
((bge.egitim<=(given.tarih+NOW()))||(given.almisti=1 )))
where
isci.aktif=1 and $filitre and isci.bolum=bge.bolum and isci.gorev=bge.gorev
order by
isci.id
sorgum pek şukela, $filitre dediği işçileri departmana fln göre seçtiğimiz
hani içinde "isci.ad like '%adi%'" veya isci.dept=3 fln olan bişiyler.
SIKINTI "join ... on " tümcesi içinde iki tablo istiyo zannımca, hata veriyo.
Nası kassak ki. Böyle union fln bana estetik gelmiyo da şimdilik öyle yapçam,
daha güzel bi çözüm öneren olur mu acep?
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama