SQL Sorgusu İçin Yardım
-
salon sınırı felan yok deresnde okul ıd ve sınıf ıd sı aynı oalan ları saydır en falaz olan kadar salon ac
salonlara 20 30 örencı sıgacak sekılde sınırlandır kafadan
tek tek sınıf ıd ve okul ıd na göre yerlestır solanlara okul sınıf lıste sonuna gelınce okul ıd yı artır yer lestırecek donguyu yaz
takı salon max ögrencı sayısı na ulansana kadar
salon dolunca 2. salona gececek dönguyu yaz devam
---
ama bazı salonlarda ögrencı az olur ona karısmam 1 msj göre derlersen salon lar felan sıkıntı cekmezsın
nasıl yaıcanı belırle ona göre hızlı ca sonuc olusturalım
fox89hakan tarafından 06/Mar/13 12:29 tarihinde düzenlenmiştir -
@fox89hakan
İlk yazdığın mantıklı (Salon sayısı oldukça fazla, olumsuz ihtimalleri zaten engelledim.) (Son yazdığın mantıksız felan gibi algılanmasın :))
@Sharp
Hocam o konuda yardım edebilir misin?
Belirli bir şeyden sonra kafam basmıyor.
ontedi tarafından 06/Mar/13 12:44 tarihinde düzenlenmiştir -
4 5 yıldır ugrasmadım ıcın pek bı cod yazmıyorum algorıtmayı tasarlarız ama
salon sınırı felan belırle yoksa cıkamazsın bu ısın ıcınden 2 cı yazdımı yap dırek ama hoca her yerınden onada bı kulp takıcaktır
bı solanda max 10 ogrencın aynı sınıfta olur sınırlarsan onlara da ıcınde bı dongu yaz aralarında mın 3 4 sıra olucak sekılde
----
10 baya fazla oldu orayı 3 4 kısı olarak ayarlayalım
fox89hakan tarafından 06/Mar/13 12:57 tarihinde düzenlenmiştir -
ösym nın sınav yerlestırme şaklı soyle galıba önu örnek alıp dusun
sınava gırecekler toplanır ögr sayısı belırlernırsalon kapasıtesı belırlersın bı salonda kac kısı gırecek mısal salonda 20 kısı her sırada 1 kısı
ögrencı sayısı / 20 yapı salon sayısını belırlersınondan sonra da yerlestırmeye baslarsın 1.okul 1. sınıf ögrencısınden
ögrencı talosunnun sıralamasını söyle yaarsan hallolucak
okul ıd, sınıf ıd nı alarak sıralama yaparsın
1.okul 1.sınıf 1. ögrencı sınıf ögrencılerı bıtınce 1.okul 2.sınıf 1.ögrencı
taloya bu sıralma ıle ögrencılerı sıralayı oradan yerlestırme yaparsan hıc bı proplemın kalmaz..
az daha ugrasırsam codları yazmaya başalrım ama işlerımden bakamıyom :S
-
ontedi bunu yazdı
@fox89hakan
İlk yazdığın mantıklı (Salon sayısı oldukça fazla, olumsuz ihtimalleri zaten engelledim.) (Son yazdığın mantıksız felan gibi algılanmasın :))
@Sharp
Hocam o konuda yardım edebilir misin?
Belirli bir şeyden sonra kafam basmıyor.
tabi ki hocam birde zaten max salon kapasitesi falanda olacak salondaki mevcut öğrenciler sayılacak vs iş çok bitirelim :)
-
şöyle olabilir mi ?
yerleştirdiğimiz öğrencileri bir dizi içinde tuttuğumuzu varsayalım.
SELECT ogrenci_ID FROM tblOgrenciler WHERE ogrenci_ID NOT IN (YerlestirilenOgrencilerDizisi) GROUP BY okul_ID, sinif_ID ORDER BY RAND() LIMIT 25
bu sorgu her okuldaki her siniftan birer öğrenci seçecek, sonucu karıştıracak ve 25 tanesini bize verecek.
(25 i burada sınıf kapasitesi olarak düşünelim)
bu elde ettiğimiz 25 öğrencinin ID sini dizimize eklersek tekrardan sorguya dahil edilmeyecekler. Böylece her seferinde yeni bir benzersiz 25 kişi gelecek.
-
ASP bilmiyorum ama genel mantığını anlatabilirim;
Şimdi öncelikle ilk öğrenciler tablosundan random bir öğrenci seçiyoruz;select tc,sinif_ID from tblogrenciler order by rand() limit 1
Daha sonra asp de bunları ayrıştırıp tc ve sinifid şeklinde 2 tane değişken haline getirmen lazım. Php den örnek verecek olursam;
$result = $sql->query('select tc,sinifID from tblogrenciler order by rand() limit 1'); $result = $result->fetch_array(); $tc = $result[0]; $sinif = $result[1];
Daha sonra ikinci sorguyla ikinci tabloda, bizim sınıfımızla aynı sınıfta bulunan birisinin yer almadığı bir salondan random siraId alıyoruz;select siraID from tblsinav_salon_siralari where ogrenciId is null and salonID not in (select salonID from tblsinav_salon_siralari where ogrenciId in (select tc from tblogrenciler where sinifID = $sinif)) order by rand() limit 1
Alan adlarına takılma. Kendine göre düzenlersin ben şimdi mantığı kurarken öylesine yazdım bazılarını. SOrguda sinifId = $sinif kısmı var. Burada ilk sorguda çektiğimiz random öğrencinin sinif numarası var. Ona göre sorguluyoruz.Bu sorgu sana random bir sira numarası verir. Sonrasında sen üstte random aldığın öğrenciyi o sıra numarasına yerleştirmelisin.
Birde tabi aynı öğrencinin random olarak ikinci defa seçilmemesi gibi sorgularında eklenmesi lazım. Orasıda sana kalmış. Benden bu kadar :) Sistemin php olsaydı çalışır halde kod verebilirdim ama asp bilgim yok.
Karışık olabilir ama ana hatları anlarsan gerisini rahatça halledersin diye düşünüyorum. -
Ben olsam önce öğrencileri sınıfa göre dizerim.
sonra başka bir temp tablo yada sorguya sınıfları dizerimve
bossiniflar[ i mod toplamsinifsayisi].Add ( ogrenci[i] )
seklinde dizerim. SP ile yapılabilir.
Böyle yaparım çünkü başka türlü sınıf sayısının ortalama bir siniftaki ogrenci sayisindan az olmasi gibi bir durum olusabilir bu durumda mecburen iki sınıf arkadasini ayni sınıfta sınav yapmak gerekebilir.
yukarıdaki şekilde yaparsan bu gibi özel durumlarda sorun çıkmaz
