Hallo,
ich möchte Content ausgeben, dessen Feld jeweils bei einer weiteren Abfrage verwendet werden soll.
In MYSQL sähe das so aus:
SELECT uid_tabelle1, * FROM tabelle1
wobei für jedes einzelne Ergebnis die weitere Abfrage
SELECT * FROM tabelle2 WHERE uid=uid_tabelle1
Eine JOIN-Abfrage kommt aus bestimmten Gründen nicht in Frage. Deshalb meine Frage: Wie bekomme ich das uid-Ergebnis der ersten Abfrage in die zweite Select-Abfrage hinein. Geht das in irgendeiner Form zum Beispiel mit...
.where = uid = {tx_blablabla:uid}
Außerdem: Wie wäre es bei einer weiteren Verschachtelung?
????
Danke und Gruß
Martin
Wie wär's mit folgendem?
temp.content = CONTENT
temp.content {
table = tt_content
pidInList = this
select.where = (NOT hidden) AND (NOT deleted)
renderObj = COA
renderObj {
10 = LOAD_REGISTER
10.contentUID.field = uid
20 = CONTENT
20 {
table = tx_blablabla
select.andWhere {
data = register:contentUID
wrap = uid=|
}
renderObj = TEXT
renderObj.field = title
}
30 = RESTORE_REGISTER
}
}
Das Wichtige dabei steht ab Zeile 8: Mit LOAD_REGISTER den Inhalt des Feldes aus tt_content speichern und bei der nächsten select-Anweisung andWhere verwenden, da es praktischerweise vom Typ stdWrap ist.
Da ich den Code nicht getestet habe, könnte es sein, dass RESTORE_REGISTER in Zeile 20 nicht ausreicht und Zeile 9 folgendermaßen aussehen muss:
[...]
10.contentUID.override.field = uid
[...]
Ich hoffe, es hilft dir.
algiz schrieb
Wie wär's mit folgendem?
Hallo,
soweit vielen Dank. Ich habe mal was versucht, aber das macht mich immer noch kirre.
tx_einsatz_einsaetze - "Haupttabelle"
tx_einsatz_fahrzeuge - Fahrzeugtabelle (u. a. mit den Feldern Einheit, Fahrzeug)
tx_einsatz_einsaetze_einsatzmittel_mm - Verknüpfungstabelle
zur Tabelle tx_einsatz_einsaetze gibt es über die mm-Tabelle mehrere Zuordnung von Fahrzeugen
Bei der Ausgabe sollen immer zuerst die Einheiten und dann die zugehörigen Fahrzeuge ausgegeben werden:
Einheit 1: Fz 1, Fz3, Fz5
Einheit 2: Fz3, Fz 4 und so weiter
Hier mein TypoScript-Versuch, der sicherlich nicht programmiertechnisch ganz astrein ist:
t = COA
t.10 = TEXT
t.10.field = uid
t.10.wrap = <br><br><b>Einsatz Nr. | </b>
[...] weitere Ausgaben
t.40 = LOAD_REGISTER
t.40.einsatznr.override.field = uid
t.50 = CONTENT
t.50.table = tx_einsatz_fahrzeuge
t.50.select.pidInList = 15
t.50.select.leftjoin = tx_einsatz_einsaetze_einsatzmittel_mm ON tx_einsatz_einsaetze_einsatzmittel_mm.uid_foreign=tx_einsatz_fahrzeuge.uid
t.50.select.andWhere.data = register:einsatznr
t.50.select.andWhere.wrap = tx_einsatz_einsaetze_einsatzmittel_mm.uid_local = |
t.50.select.selectFields = *, MIN(tx_einsatz_einsaetze_einsatzmittel_mm.sorting) AS sort
t.50.select.groupBy = tx_einsatz_fahrzeuge.einheit
t.50.select.orderBy = sort #Sortierung
t.50.renderObj = COA
t.50.renderObj.1 = LOAD_REGISTER
t.50.renderObj.1.einheit.field = einheit
t.50.renderObj.10 = TEXT
t.50.renderObj.10.field = einheit
t.50.renderObj.10.wrap = <br>Einheit: |
#nur die Einheiten ausgeben
#und hier der Knackpunkt: zu jeder Einheit noch ein Mal die einzelnen Fahrzeuge ausgeben - funktioniert nicht.
t.50.renderObj.20 = CONTENT
t.50.renderObj.20.wrap = Fahrzeuge: |
t.50.renderObj.20.table = tx_einsatz_fahrzeuge
t.50.renderObj.20.select.pidInList = 15
t.50.renderObj.20.select.leftjoin = tx_einsatz_einsaetze_einsatzmittel_mm ON (tx_einsatz_einsaetze_einsatzmittel_mm.uid_foreign=tx_einsatz_fahrzeuge.uid)
t.50.renderObj.20.select.andWhere.dataWrap = uid_local = {register:einsatznr} AND einheit = '{register:einheit}'
t.50.renderObj.20.renderObj.21 = TEXT
t.50.renderObj.20.renderObj.21.value = <br>uid_local = {register:einsatznr} AND einheit = '{register:einheit}'
t.50.renderObj.20.renderObj.21.insertData = 1
t.50.renderObj.20.renderObj = COA
t.50.renderObj.20.renderObj.10 = TEXT
t.50.renderObj.20.renderObj.10.field = fahrzeugbezeichnung
t.50.renderObj.20.renderObj.10.wrap = <br>|
Wenn ich die Abfrage bewusst mit einem Fehler versehe, bekomme ich in der Fehlermeldung eine astreine SQL-Abfrage, mit der das gewünschte Ergebnis geliefert wird...
SELECT fehlerprovokation
FROM tx_einsatz_fahrzeuge LEFT OUTER JOIN tx_einsatz_einsaetze_einsatzmittel_mm ON (tx_einsatz_einsaetze_einsatzmittel_mm.uid_foreign=tx_einsatz_fahrzeuge.uid)
WHERE tx_einsatz_fahrzeuge.pid IN (15) AND uid_local = 31 AND einheit = 'Einheit 1' AND tx_einsatz_fahrzeuge.deleted=0
Trotzdem funktioniert hier was nicht... kann mir jemand weiter helfen?
martin_md schrieb
Trotzdem funktioniert hier was nicht... kann mir jemand weiter helfen?
Ich bin der Ursache einen Schritt näher: Bei mehreren Datensätzen einer Gruppe scheint immer der erste nicht angezeigt zu werden.
Kann mir denn keiner weiterhelfen?