In Abschnitt wurde im
Zusammenhang mit dem Eintrag 'form_param' das Lookup-Konzept besprochen.
Dabei wurde davon ausgegangen, dass der referenzierte Schlüssel immer
aus genau einem Attribut besteht. Der Schlüssel muss das erste Attribut
in der SQL-Anfrage für den Lookup sein. Besteht der Schlüssel aus
mehreren Attributen, müssen diese Attribute ebenfalls am Anfang stehen.
Zusätzlich muss diesen Attributen in 'composed_attribs' ein eindeutiger
Bezeichner zugeordnet werden, der dann als Index in 'form_param'
verwendet werden muss. Der Bezeichner kann auch in anderen Einträgen
(z. B. 'cols') benutzt werden.
Im folgenden Beispiel wird eine Liste der Übungsgruppen ausgegeben, wobei die Tutoren der Gruppen verändert werden können. Die Tutoren werden aus der Relation 'arbeitet_fuer_vorlesung' bestimmt, wobei die Referenzierung über den zusammengesetzten Schlüssel ('tutor_istmitarbeiter', 'tutor_nummer') erfolgt. Der Fremdschlüssel erhält als Bezeichner 'betreuer'.
tabellenid => "uebungen",
leittabelle => "uebungsgruppe",
required_attribs => array(
vorlesungnummer => 10,
),
anzeige => array(
aktionen=>array(inline_aendern=>1),
query=>array(
array(
SELECT=>"uebungsgruppe.*, wochentag.tag",
FROM=>"uebungsgruppe, wochentag",
WHERE=>"wochentag.wert=uebungsgruppe.wochentag",
ORDER=>"gruppennummer",
),
),
composed_attribs=>array(
betreuer=>array("tutor_istmitarbeiter", "tutor_nummer"),
),
cols=>array("gruppennummer", "betreuer", "tag", "zeit"),
aendern_cols=>array("betreuer"),
form_param=>array(
betreuer=>array(
lookup=>"(SELECT istmitarbeiter, nummer, titel, name, vorname
FROM arbeitet_fuer_vorlesung a, mitarbeiter m
WHERE istmitarbeiter<>'0'
AND a.nummer=m.mitarbeiternummer
AND vorlesungnummer=10)
UNION ALL
(SELECT istmitarbeiter, nummer, 'Stud.' as titel, name, vorname
FROM arbeitet_fuer_vorlesung a, student s
WHERE istmitarbeiter='0'
AND a.nummer=s.studentnummer
AND vorlesungnummer=10)",
format=>'$(titel) $(vorname) $(name)',
type=>"select",
),
),
),
);
modul_tabelle_list($modul_param);