yo,
ich hab gleich die union syntax angesehen, wird aber noch einen moment dauern, bis ich den ganz verstanden hab. der schreibt das ergebnis ja nicht irgendwohin, sondern speichert alle select's und gibt sie gemainsam aus, oder?
der union macht in prinzip folgendes. er nimmt die ergebnistabellen der jeweiligen abfragen und fügt sie zu einer zusammen. wird quasi einfch nur "zusammengeklebt", wobei beim UNION doppelte datensäze rausgeschmissen werden im gegensatz zum UNION ALL.
eine fragebogendatenbank. 30 fragen mit jeweils 2 bis 5 unterfragen (sprich dazugehörigen datensätzen in jeweils einer tabelle)
daraus würde ich versuchen eine einzige tabelle zu machen und auch die personen tabelle mit zu integrieren. für die antwort jeder frage oder einer unterabfrage würde dann in einer spalte abgebildet werden.
kurzprinzip: jeder der ausfüllt hat von vornherein eine id. ein ausgefüllter fragebogen (30Fragen) kennzeichnet sich durch die gleiche phpsessionid. ist die session gekillt oder abgelaufen kann der fragebogen nochmal ausgefüllt werden. (=>gleiche userid, andere sessionid)
das muss meiner meinung nach gar nicht in die datenbank mit rein. erst wenn alle fragen beantwortet sind und die sessionid noch gültig ist, schreibst du in die datenbank. ich gehe mal davon aus, dass die user sowieso anonym sind, sprich ihre daten nicht gespeichert werden. also bevor nicht alles ok ist, wird die datenbank auch nicht in anspruch genommen. ist alles ok, so musst du nur einen datensatz in einer tabelle schreiben, um alle anworten der fragen abbilden zu können.
ich habe ursprünglich deshalb für jede frage eine tabelle genommen, damit es nicht so lange dauert einen datensatz zu suchen und weil nur die daten jeweils einer frage in den selben feldern speichern lassen.
ganz schlechter ansatz und bezogen auf die geschwindigkeit einfach mal falsch.
aber wenn ein nachträgliches zusammenfassen in der abfrage hilft..
das sollte es ungemein.
Ilja