select
Dieses Objekt erzeugt eine MySQL-Abfrage, die Datensätze aus der Datenbank ausliest.
Einige Datensätze sind versteckt oder durch Anfangs- und End-Zeiten zeitgesteuert. Diese Bedingungen werden automatisch der SQL-Abfrage hinzugefügt, indem im tables.php-Array nachgeschlagen wird (enablefields).
Wenn das pidInList-Feature aktiviert ist, wird außerdem jede Seite der pid-Liste, die für den Website-Besucher nicht sichbar ist, aus der pid-Liste entfernt. Daher werden keine Datensätze aus versteckten, zeitgesteuerten oder zugriffsgeschützen Seiten oder dem Recycler ausgewählt.
Eigenschaft | Datentyp | Beschreibung | Standard |
Liste von page_ids | |||
Liste von page_ids / stdWrap | this | ||
SQL-orderBy | Ohne ORDER BY . Beispiel: sorting, title | ||
SQL-groupBy | Ohne GROUP BY. Beispiel: CType | ||
int + calc + total | Maximale Anzahl an Einträgen. Sonder-Schlüsselwort: total wird mit count(*) ersetzt. | ||
int + calc + total | Nummer des ersten Datensatzes. Sonder-Schlüsselwort: total wird mit count(*) ersetzt. | ||
SQL-where | Ohne WHERE. | ||
SQL-where / stdWrap | Ohne AND. Beispiel: NOT doktype | ||
string | Wenn diese Eigenschaft gesetzt ist, zeigt sie auf das Feld im Datensatz, welches eine Referenz auf einen Datensatz in der sys_language-Tabelle darstellt. Außerdem werden nur Datensätze ausgewählt, bei denen der Wert dieses Feldes mit $GLOBALS["TSFE"]->sys_language_uid (welches mit der »config.sys_language_uid-Option gesetzt wird) übereinstimmt. | ||
string | Auszuwählende Felder, oder COUNT(*). | ||
string | Gibt jeweils einen Tabellennamen für JOIN, LEFT OUTER JOIN und RIGHT OUTER JOIN an. |
Kommentare von registrierten Benutzern:
| Autor | Nachricht |
|---|---|
|
Verfasst am: Mittwoch, 02-09-09 18:22
|
|
|
arsi
Dabei seit: 09. 01. 2007
Beiträge: 0
|
WHERE wird übriges nicht durch den DBAL auf DBMS-spezifische Syntax gefiltert - hier man kann also problemloslos z.B. CONCAT verwenden um Seiten mit einem bestimmten Keyword rauszufinden - oder auch spezfische MySQL-Syntax innerhalb der WHERE-Optimierung (auch wenn es schlechter Stil ist) z.B. Tabelle pages: keyword ------- key,keyword2,blah,foo Mit WHERE keyword like '%key%' würde man auch Seiten mit "keyword" (aber ohne "key" ergo: CONCAT() muss her WHERE CONCAT(',', keyword, ',') like ',%key%,' darüber kann man z.B. noch jeweils ein REPLACE stülpen und ggf. Leerzeichen zu eliminieren da man nicht sicher ist ob foo, bar, baz oder foo,bar, baz eingetragen wird |
|
Verfasst am: Samstag, 09-05-09 13:41
|
|
|
Andreas Haubner
Dabei seit: 09. 05. 2009
Beiträge: 0
|
Danke an Nils, ergänzend dazu noch ein Hinweise wenn man mehrere Tabellen joinen möchte (also multiple joins). TYPOSCRIPT 10 = CONTENT 10.table = tx_partner_main 10.select { pidInList = 117 andWhere { data = GPVar:id_partner wrap = tx_partner_main.uid=| } leftjoin = tx_partner_relationships ON(tx_partner_relationships.uid_primary=tx_partner_main.uid) LEFT JOIN tx_partner_relationships2 ON(tx_partner_relationships2.uid_primary=tx_partner_main.uid) } 10.renderObj = COA 10.renderObj { 10 = TEXT 10.wrap = *|* 10.field = label } Es bringt übrigens nichts "join", "leftjoin" und "rightjoin" gleichzeitig zu verwenden - nur eines davon kommt zur Anwendung. Folgender Code aus 'typo3/sysext/cms/tslib/class.tslib_content.php' brachte mich zu der Erkenntnis PHP // Setting up tablejoins:
$joinPart='';
if ($conf['join']) {
$joinPart = 'JOIN ' .trim($conf['join']);
} elseif ($conf['leftjoin']) {
$joinPart = 'LEFT OUTER JOIN ' .trim($conf['leftjoin']);
} elseif ($conf['rightjoin']) {
$joinPart = 'RIGHT OUTER JOIN ' .trim($conf['rightjoin']); |
|
Verfasst am: Donnerstag, 20-07-06 12:24
|
|
|
Nils
Dabei seit: 24. 11. 2004
Beiträge: 1
|
Im Join-Attribute wird nicht nur der Tabellenname angegeben, sondern auch die Bedingung (USING,ON): TYPOSCRIPT 10 = CONTENT 10.table = tx_partner_main 10.select { pidInList = 117 andWhere { data = GPVar:id_partner wrap = tx_partner_main.uid=| } leftjoin = tx_partner_relationships ON(tx_partner_relationships.uid_primary=tx_partner_main.uid) } 10.renderObj = COA 10.renderObj { 10 = TEXT 10.wrap = *|* 10.field = label } |
|
Verfasst am: Montag, 19-12-05 17:12
|
|
|
Jo
Dabei seit: 01. 05. 2003
Beiträge: 13
|
TYPOSCRIPT enspricht dieser SQL-Syntax: PHP LIMIT 23, 10 Es werden also ab dem 23. gefundenen Datensatz insgesamt 10 Datensätze aus der Datenbank ausgelesen. |
|
Verfasst am: Montag, 19-12-05 15:13
|
|
|
Jo
Dabei seit: 01. 05. 2003
Beiträge: 13
|
Beachte, dass uidInList nicht vom Typ stdWrap ist. Was also bei pidInList geht: TYPOSCRIPT pidInList.data = GPvar:myNumbergeht mit uidInList leider nicht. |



