Wie mehrere Termine n : 1 Kurse richtig joinen?

Wie mehrere Termine n : 1 Kurse richtig joinen?

am 08.07.2006 17:13:20 von SE

Hi,

(ich hatte es mal in de.comp.datenbanken.mysql versucht, aber bisher keine
Reaktion bekommen)

ich habe eine Tabelle mit Terminen:

CREATE TABLE `kd55`.`termine` (
`id` int(10) unsigned NOT NULL auto_increment,
`kurse_id` int(10) unsigned NOT NULL default '0',
`von` datetime NOT NULL default '0000-00-00 00:00:00',
`bis` datetime NOT NULL default '0000-00-00 00:00:00',
`beschreibung` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

und dazugehörige Kurse:

DROP TABLE IF EXISTS `kd55`.`kurse`;
CREATE TABLE `kd55`.`kurse` (
`id` int(10) unsigned NOT NULL auto_increment,
`titel` varchar(255) NOT NULL default '',
...
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Ein Kurs kann einen oder mehrere Termine haben. Die Relation wird in
termine.kurse_id festgehalten. Meine Frage: Wie joine ich die beiden
Tabellen am besten (MySQL 5.0), so dass ich in meinem Join (soll eine View
werden) zwei Felder habe, die den ersten und den letzten Termin enthalten.
Ich möchte sagen können wann ein Kurs anfängt und aufhört, ohne beim
Abspeichern der Termine zwei Felder in der kurse Tabelle zu beschreiben.

Schönen Gruß
--
Sascha Ebach Digitale Wertschöpfung
Hugo-Junkers-Str. 26 50739 Köln
Tel: 0221 / 5994393 Fax: 0221 / 5994394
mailto:se@digitale-wertschoepfung.de
Web: http://www.digitale-wertschoepfung.de

Re: Wie mehrere Termine n : 1 Kurse richtig joinen?

am 25.07.2006 21:37:27 von Mathias Kubens

Saša Ebach schrieb:
> Ein Kurs kann einen oder mehrere Termine haben. Die Relation wird in
> termine.kurse_id festgehalten. Meine Frage: Wie joine ich die beiden
> Tabellen am besten (MySQL 5.0), so dass ich in meinem Join (soll eine
> View werden) zwei Felder habe, die den ersten und den letzten Termin
> enthalten. Ich möchte sagen können wann ein Kurs anfängt und aufhört,
> ohne beim Abspeichern der Termine zwei Felder in der kurse Tabelle zu
> beschreiben.

Hallo hier mal ein Schuss ins Blaue mit meinen kleinen mySQL
Kenntnissen. Habe es nicht ausprobiert und gebe keine Garantie :-)

SELECT titel, MIN(termine.von) AS kursbeginn, MAX(termine.bis) AS kursende
FROM kd55.kurse, kd55.termine
WHERE kurse.id= $gewuenschteKursID
AND termine.kurse_id=kurse.id