Mittwald CM Service: TYPO3-Hosting, TYPO3-Schulungen, Agenturpakete, Managed-Server
Optimiertes TYPO3 Hosting von Mittwald CM Service

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

uidInList

Liste von page_ids

pidInList

Liste von page_ids / stdWrap

this

orderBy

SQL-orderBy

Ohne ORDER BY . Beispiel: sorting, title

groupBy

SQL-groupBy

Ohne GROUP BY. Beispiel: CType

max

int + calc + total

Maximale Anzahl an Einträgen.

Sonder-Schlüsselwort: total wird mit count(*) ersetzt.

begin

int + calc + total

Nummer des ersten Datensatzes.

Sonder-Schlüsselwort: total wird mit count(*) ersetzt.

where

SQL-where

Ohne WHERE.
Beispiel:
(title LIKE '%IRGENDETWAS%' AND NOT doktype)

andWhere

SQL-where / stdWrap

Ohne AND. Beispiel: NOT doktype

languageField

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.

selectFields

string

Auszuwählende Felder, oder COUNT(*).

join
leftjoin
rightjoin

string

Gibt jeweils einen Tabellennamen für JOIN, LEFT OUTER JOIN und RIGHT OUTER JOIN an.


Kommentare von registrierten Benutzern:

Kommentar von: arsi

02. 09. 2009, 18:22
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") finden - mit like '%,key,%' würde man "key" nicht finden da am Anfang und Ende des Strings die Kommas fehlen - das Keywords-Feld entsprechend ändern wäre eine Möglichkeit

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


Profil

Kommentar von: Andreas Haubner

09. 05. 2009, 13:41
Danke an Nils,
ergänzend dazu noch ein Hinweise wenn man mehrere Tabellen joinen möchte (also multiple joins).

Typoscript:Zeilennummerierung:  An / Aus

  1. 10 = CONTENT
  2.       10.table = tx_partner_main
  3.       10.select {                              pidInList = 117
  4.       andWhere {
  5.         data = GPVar:id_partner
  6.         wrap =  tx_partner_main.uid=|
  7.       }
  8.       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)
  9.       }
  10.       10.renderObj = COA
  11.       10.renderObj {
  12.         10 = TEXT
  13.         10.wrap = *|*
  14.         10.field = label
  15.       }


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:Zeilennummerierung:  An / Aus

  1. // Setting up tablejoins:
  2.       $joinPart='';
  3.       if ($conf['join'])  {
  4.         $joinPart = 'JOIN ' .trim($conf['join']);
  5.       } elseif ($conf['leftjoin'])  {
  6.         $joinPart = 'LEFT OUTER JOIN ' .trim($conf['leftjoin']);
  7.       } elseif ($conf['rightjoin']) {
  8.         $joinPart = 'RIGHT OUTER JOIN ' .trim($conf['rightjoin']);
[/HTML]

Profil

Kommentar von: Nils

20. 07. 2006, 12:24
Im Join-Attribute wird nicht nur der Tabellenname angegeben, sondern auch die Bedingung (USING,ON):

Typoscript:Zeilennummerierung:  An / Aus

  1. 10 = CONTENT
  2. 10.table = tx_partner_main
  3. 10.select {                              pidInList = 117
  4. andWhere {
  5.   data = GPVar:id_partner
  6.   wrap =  tx_partner_main.uid=|
  7. }
  8. leftjoin = tx_partner_relationships ON(tx_partner_relationships.uid_primary=tx_partner_main.uid)
  9. }
  10. 10.renderObj = COA
  11. 10.renderObj {
  12.   10 = TEXT
  13.   10.wrap = *|*
  14.   10.field = label
  15. }


Profil

Kommentar von: Jo

19. 12. 2005, 17:12
Typoscript:Zeilennummerierung:  An / Aus

  1. select.begin = 23
  2. select.max = 10


enspricht dieser SQL-Syntax:
Php:Zeilennummerierung:  An / Aus

  1. LIMIT 23, 10


Es werden also ab dem 23. gefundenen Datensatz insgesamt 10 Datensätze aus der Datenbank ausgelesen.


Kommentar von: Jo

19. 12. 2005, 15:13
Beachte, dass uidInList nicht vom Typ stdWrap ist. Was also bei pidInList geht:
Typoscript:Zeilennummerierung:  An / Aus

  1. pidInList.data = GPvar:myNumber

geht mit uidInList leider nicht.




Seite drucken
 
TYPO3 Hosting in der Version 4.3.2 kostenlos bei Mittwald CM Service testen

TYPO3 4.3.2 jetzt testen

Testen Sie die neue TYPO3 Version 4.3.2 kostenlos für einen Monat


Entwicklerschulungen

  • Espelkamp:
    Mit., 17.03.10 - Fre., 19.03.10
  • Berlin:
    Mit., 21.04.10 - Fre., 23.04.10
  • Köln:
    Mon., 21.06.10 - Mit., 23.06.10