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);