Der Eintrag query steht in
$anzeige, $aendern und $loeschen zur Verfügung. query ist selbst
ein Array, das mehrere Anfragen enthalten kann. Jede Anfrage ist ein
Eintrag in query. Die Anfragen werden vor der Ausführung des Query
mit UNION ALL verknüpft. Die einzelnen Anfragen selbst sind wiederum
als Arrays (mit Hashes) organisiert, wobei die einzelnen Bestandteile
(Tabelle ) den Sprachelementen
von SQL entsprechen. Die Bestandteile werden vor der Ausführung des
Query in einen SQL-String umgewandelt. Der Syntax entspricht dem von
SQL.
Das Beispiel aus
könnte man so erweitern dass, zusätzlich zur Tutornummer auch der
Name des Tutors angezeigt wird.
tabellenid => ``uebungsgruppe'',
leittabelle => ``uebungsgruppe'',
required_attribs => array(
vorlesungnummer => 10
),
anzeige => array (
query => array (
array (
SELECT => "u.*, m.vorname, m.name",
FROM => "uebungsgruppe u, mitarbeiter m",
WHERE => "u.tutor_istmitarbeiter<>'0'
AND u.tutor_nummer=m.mitarbeiternummer",
),
array (
SELECT => "u.*, s.vorname, s.name",
FROM => "uebungsgruppe u, student s",
WHERE => "u.tutor_istmitarbeiter='0'
AND u.tutor_nummer=s.studentnummer",
),
),
),
);
modul_tabelle_list($modul_param);
Im Zusammenhang mit Gruppierungen ist folgendes zu beachten: Normalerweise werden die einzelnen Ergebnistupel des Query durch die Primärschlüssel der Leittabelle gekennzeichnet. Wird beispielsweise die Aktion Ändern ausgelöst, kann das zu ändernde Tupel von der Anwendung durch den gespeicherten Primärschlüssel identifiziert werden. Da bei einer Gruppierung unter Umständen auch der Primärschlüssel einbezogen wird, wird hier ein anderer Mechanismus zur Identifizierung der einzelnen Tupel verwendet. Die Anwendung merkt sich die einzelnen Ergebnistuppel an Hand der Attribute der Leittabelle, nach denen gruppiert wurde. Das folgende Beispiel soll das Ändern der Mailadressen eines Student ermöglichen. Da ein Student mehrere Mailadressen haben kann, wird in der Haupttabelle nach den Mailadressen gruppiert. Dabei kommt es auf das Attribut 'm.studentnummer' an. An Hand dieses Attributs weiß die Anwendung, welche Mailadressen geändert werden sollen.
tabellenid => "mailadressen",
leittabelle => "mailadressenstudent",
anzeige => array (
query => array (
array (
SELECT => "m.studentnummer, s.vorname, s.name",
FROM => "mailadressenstudent m, student s",
WHERE => "m.studentnummer=s.studentnummer",
GROUP => "m.studentnummer, s.vorname, s.name",
),
),
aktionen => array (aendern => 1),
),
);
modul_tabelle_list($modul_param);
Der Modulprogrammierer kann über das Array WHERE_EXT die Such- und Sortiermöglichkeiten aktivieren und beeinflussen. Das Array WHERE_EXT verwendet folgende Schlüssel:
Im folgenden ein kurzes Beispiel, das das Suchen in der Relation student nach Vor- und Nachname ermöglicht:
tabellenid => "student",
leittabelle => "student",
anzeige => array (
query => array (
array (
SELECT => "vorname, name as nachname,
matrikelnummer, hauptfach",
WHERE_EXT => array (
vorname => "cmp(vorname)",
nachname => "cmp(name)",
),
),
),
),
);
modul_tabelle_list($modul_param);