Ben bir süre için sql ile aynı sorunu yaşadım ve ben her zaman kullanmak kesmek aynı 'kaba kuvvet' yazmak için oturup gibi, ben ne yapmak istediğinizi yapmak için daha etkili bir yolu var OLMALIDIR rakam.
Ben buna benzer tablolar var:
grades(gradeID, taskID, grade, username, date)
tasks(taskID, task...)
assignment(assignmentID, title...)
assignment_tasks(assignmentID, taskID)
assignment_students(assignmentID, username)
students(username, forename...)
son 5 tablo, oldukça statik bir kez kurmak ve çoğunlukla yalnız bırakılır.
sınıflarda tablo için, yeni bir rekor, yeni bir sınıf, bir görev için girilen her zaman oluşturulur.
Diyorum, 5 görevler ve her öğrencinin en son bir ben özet görüntülemek istediğiniz biri olmak, her görev için notlarının herhangi bir sayı olabilir oluşabilir atamaya ilişkin bir özet tablo üretmek istiyorum.
Ne ben normalde yapardım yani 5 görevler, 30 öğrenci varsayarak, her biri için en son notu sorgulama, her öğrenci için her görev döngü döngü için dev bir iç içe inşa ardından, öğrencilerin bir listesini ve atama görevleri listesini sorgulamak olduğunu , her zaman olduğu gibi waaay çok beni vurdu 152 sorgular bulunuyor.
I (umut) anlamaya benim sql bilgi bir korkunç utanç verici bir boşluk var ve bunu yapmak için çok daha zeki bir yolu var.
Edit: Thanks for the answer - I'm still working on building the actual database so I can test it, but I suspect that the answer below doesn't cover the following issues:
Bir öğrenci bir görev / atama girişiminde bulunmadığı takdirde, orada notları tablosunda kendileri için tüm girdileri olabilir ama yine de her görev için varsayılan bir notu ("u") ile özet tabloda göstermek gerekmez. Ben bu biraz zor yapar düşünüyorum.
Edit again: I have the embryo database now and it works in that I get a list of most recent grades with gaps where there's no grade. Transposing that list is now the subject of another question!