Zum Inhalt springen

SQL-Join mittels Wrapperklasse/Executing Queries, aber wie?

Erstellt am 18. September 2006 · 7 Antworten · letzte Antwort am 22. September 2006

Tags: Frage

typowasser ·

Hi,

ich bastel ja gerade an meinem Kalender Export rum und komme jetzt zur leidigen Stelle eines joins, da ich die Kategorie aus einer anderen Tabelle brauche.
Da ich mich aber natürlich an die Typo3 Coding-Richtlinien halten will, wollte ich fragen wie ich denn einen Join in der Wrapperklasse/den Executing queries realisiere?

(ich beziehe mich auf http://typo3.org/documentation/document-library/core-documentation/doc_core_cgl/current/view/1/4/#id2798317
bzw http://typo3.org/documentation/document-library/core-documentation/doc_core_cgl/current/view/1/4/#id2798542
)

Der Join,den ich einbauen will sieht in phpMyAdmin ungefähr so aus

SELECT `tx_calendar_item`. * , `tx_calendar_cat`.`title` AS eventtype
FROM `tx_calendar_item`
LEFT JOIN `tx_calendar_cat` ON ( `tx_calendar_item`.`category` = `tx_calendar_cat`.`uid` )
LIMIT 0 , 30

Könnt ihr mir da weiterhelfen?
Danke,
Typowasser

jenses ·
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
$select_fields='tx_calendar_item.* , tx_calendar_cat.title AS eventtype',
$from_table='tx_calendar_item, tx_calendar_cat',
$where_clause='tx_calendar_item.category = tx_calendar_cat.uid',
$groupBy='',
$orderBy='',
$limit='0 , 30');
while($this->internal['currentRow'] = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))	{
blablabupp...
}
typowasser ·

Hi,
sicher dass das dem left join entspricht - ich denke eher dass ist ein inner join.
Denn bei tx_calendar_item.category = tx_calendar_cat.uid wird doch dann 'false' zurückgegeben, wenn die category nicht als uid vorhanden ist.

Das Problem ist nämlich, dass in der categorie table keine uid 0 vorhanden ist - somit würden alle Einträge bei denen keine Kategorie gesetzt ist (category =0) nicht angezeigt werden, oder sehe ich das falsch?

EDIT: Ich habs gerade ausprobiert, leider werden dann nur die Zeilen angezeigt, bei denen die categorie existiert/gesetzt ist

Danke
Typowasser

eucstyle ·
$from_table = "`tx_calendar_item` LEFT JOIN `tx_calendar_cat` ON ( `tx_calendar_item`.`category` = `tx_calendar_cat`.`uid` )"
typowasser ·

eucstyle: danke - genau das ist es - ich bin gerade unabhängig von dir draufgekommen. 😉 dennoch danke!

Ich finde es zwar immernoch ein wenig seltsam, dass es dafür keine schönere Lösung gibt, aber nun gut 😉

Danke und solved

steffenk ·

mit den SQL-Methoden von cObj sind joins möglich - ausserdem sind inner joins auch mit mehreren Tabellen und Where möglich.