Hallo zusammen,
ich kämpfe immer noch mit meiner ersten Extention. Jetzt habe ich folgendes Problem:
Ich möchte gerne dieses SQL als Datengeber verwenden:
SELECT * FROM tx_dgsimmo_obj
where uid_stadtteil = 3
union
SELECT * FROM tx_dgsimmo_obj
where tx_dgsimmo_obj.uid_stadtteil in
(select uid from tx_dgsimmo_stadtteil
where uid_stadtteilreg =
(select uid_stadtteilreg from tx_dgsimmo_stadtteil
where uid = 3
)
)
Sinn und Zweck ist folgedner:
(ich lasse zum besseren Verständnis jetzt mal den Ext-Key bei den Tabellenbezeichnungen weg)
Jedem Objekt ist ein Stadtteil zugeordnet
Tabelle: obj
Feld: uid_stadtteil
Jedem Stadtteil ist eine Region zugeordnet:
Tabelle: stadtteil
Feld: uid_stadtteilreg
Ich habe in meiner listView ein DropDown-Feld eingefügt, welches mir alle Stadtteile ausgibt. Wenn ich hier eine Auswahl treffe, sollen
- zuerst alle Objekte aus dem gewählten Stadtteil ausgegeben werden
- und anschließend alle weiteren Objekte aus der Region ausgegeben werden, zu welcher der Stadtteil gehört.
Das obige SQL verrichtet im Prinzip seinen Dienst so, wie ich es gerne hätte.
Mein Problem ist, dass ich nicht weiß, wie ich das "pi_exec_query" bestücken muss, damit ich das SQL mit der UNION-Anweisung verwenden kann. Also habe ich es ein wenig ausgetrickst:
Die Doku sagt:
tslib_pibase.pi_exec_query (
$table,
$count = 0,
$addWhere = '',
$mm_cat = '',
$groupBy = '',
$orderBy = '',
$query = ''
)
Zum "addWhere" steht folgendes:
"Additional WHERE clauses (should be starting with " AND ....")"
Die Parameter sind hier komplett erklärt: http://typo3.org/fileadmin/typo3api-4.0.0/df/d32/classtslib__pibase.html#71db8cffd4bc879c99106247adb997cd
Also habe ich folgendes gemacht:
$where.=' and uid_stadtteil ='.$stadtteil.'
union
SELECT * FROM tx_dgsimmo_obj
where tx_dgsimmo_obj.uid_stadtteil in
(select uid from tx_dgsimmo_stadtteil
where uid_stadtteilreg =
(select uid_stadtteilreg from tx_dgsimmo_stadtteil
where uid = '.$stadtteil.'
)
)
';
$res = $this->pi_exec_query('tx_dgsimmo_obj',0,$where);
Das funktioniert auch zunächst wunderbar. Wenn ich allerdins die Ergebnisliste durch einen Klick auf eine Überschrift umsortiere, knallt es. Es ist naheliegend, dass die Syntax zerschossen wird.
Außerdem geht mir durch das UNION-SQL die Einschränkung auf die Datensätze der ausgewählten Seiten im PLugIn verloren, was man aber sichlich noch in den Griff bekommt. Für die PID's wird es ja vermutlich eine Variable geben.
Lange Rede, kurzer Sinn:
Es scheint nicht die optimale Lösung zu sein und ich weiß nicht mehr weiter...
Wie muss ich pi_exec_query korrekt bestücken? Oder kann ich eine andere Funktion nutzen?
Wer kann helfen?
Gruß
Booley
PS: Ich hoffe, dass irgendjemand bis hier durchgehalten hat und auch noch verstanden hat, was ich da verzapft habe...
#giggle#