Mailinglisten-Archive |
Michael Kinne schrieb: > Also die Tabelle sieht dann nach Einträgen für 2 Dozenten, Kursen und > Teilnehmer so aus > > vhs dozent kurs teilnehmer > 2 2 1 1 Neuer Dozent > 2 3 1 1 Neuer Dozent > 2 2 2 1 Neuer Kurs > 2 3 3 1 Neuer Kurs > 2 1 1 2 Neuer Teilnehmer > 2 1 1 3 Neuer Teilnehmer > 2 2 2 2 Teilnehmer an Kurs > angemeldet > 2 3 3 3 Teilnehmer an Kurs > angemeldet entspricht aber nicht der Normalform ... ;-) aber weitere Normalisierung wäre wohl nur in der Thorie sinnvoll, in der Praxis passt da wohl schon glaub ich > Jetzt habe ich folgendes Problem , wenn ich einen neuen Teilnehmer an einem > bestehenden Kurs anmelden möchte > soll er mir nur die anzeigen die noch nicht in diesem Kurs angemeldet sind > ( z.Bsp Teilnehmer 3 in Kurs 2 ) > > Versuche das mit folgender Abfrage, klappt aber nicht > > SELECT teilnehmer.teilnehmer_id, teilnehmer.teilnehmer_name, > teilnehmer.teilnehmer_vorname, teilnehmer.teilnehmer_strasse, > teilnehmer.teilnehmer_hausnummer, teilnehmer.teilnehmer_plz, > teilnehmer.teilnehmer_ort > FROM bildungseinrichtung, dozenten, kurse, teilnehmer, > vhs_dozent_kurs_teilnehmer_rel > WHERE bildungseinrichtung.bildungseinrichtung_id = > vhs_dozent_kurs_teilnehmer_rel.bildungseinrichtung_id > AND bildungseinrichtung.bildungseinrichtung_id = '$iEinrichtungs_id' > AND dozenten.dozenten_id = vhs_dozent_kurs_teilnehmer_rel.dozenten_id > AND dozenten.dozenten_id = '1' > AND kurse.kurs_id = vhs_dozent_kurs_teilnehmer_rel.kurs_id > AND kurse.kurs_id = '1' > AND teilnehmer.teilnehmer_id = vhs_dozent_kurs_teilnehmer_rel.teilnehmer_id > ORDER BY teilnehmer.teilnehmer_name, teilnehmer.teilnehmer_vorname, > teilnehmer.teilnehmer_strasse ASC > > was ist falsch daran? mhm, ... zur Formatierung sag ich jetzt nichts ... also: Teilnehmer die noch nicht bei dem Kurs sind aber in der rel-tabelle SELECT teilnehmer.* MAX(kurs_id) AS `kurs_id_max` FROM vhs_dozent_kurs_teilnehmer_rel AS `rel` LEFT JOIN teilnehmer USING (teilnehmer_id) WHERE `rel`.bildungseinrichtung_id = '$iEinrichtungs_id' AND `kurs_id` IN ( 1, '$kurs_id') GROUP BY `teilnehmer`.`teilnehmer_id` HAVING `kurs_id_max` = 1 ORDER BY teilnehmer.teilnehmer_name, teilnehmer.teilnehmer_vorname, teilnehmer.teilnehmer_strasse ich bekomme nur etwas Zweifel wenn ich die Längen unserer beiden Abfragen vergleiche ... deine Abfrage ist wirklich ein Monster ;-) p.s. das 'ASC' beim ORDER BY wirkt sich nur auf das letzte aus, du musst das hinter jedes Feld setzen wenn du die Sortiereihenfolge ändern willst, abgesehen davon das ASC eh default ist: ORDER BY teilnehmer.teilnehmer_name ASC, teilnehmer.teilnehmer_vorname ASC, teilnehmer.teilnehmer_strasse ASC -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive