MySQL Abfragen mit Join

MySQL abfragen mit JOIN

Bei der Extension Entwicklung kommt es immer wieder vor das man Datenbanktabellen mit anderen Datenbanktabellen in Verbindung setzt.
Mit dem Kickstarter ist das sehr schön zu Realisieren.

Bei der Frontend Programmierung möchte man dann zB einen Filter setzen und die MySQL Abfragen betreffen dann nicht nur eine Tabelle sondern eben auch diese die in Verbindung stehenden.
Für solche Abfragen gibt es den JOIN Befehl der es erlaubt komplexere Abfragen über mehrere Tabellen zu machen.

Hier ein paar Beispiele, wie man die TYPO3 MySQL Abfragen mit Join realisieren kann:

$joinstring="";
$wherestring="deleted=0 ";

if(t3lib_div::GPVar('objekt')!=""){
$joinstring.="INNER JOIN tx_jobvermittlung_inserate_objekt_mm ON tx_jobvermittlung_inserate.uid = tx_jobvermittlung_inserate_objekt_mm.uid_local ";
$wherestring.='AND tx_jobvermittlung_inserate_objekt_mm.uid_foreign="'.$this->piVars["objekt"].'"';}

if(t3lib_div::GPVar('region')!=""){
$joinstring.="INNER JOIN tx_jobvermittlung_inserate_region_mm ON tx_jobvermittlung_inserate.uid = tx_jobvermittlung_inserate_region_mm.uid_local ";
$wherestring.='AND tx_jobvermittlung_inserate_region_mm.uid_foreign="'.$this->piVars["region"].'"';}

if(t3lib_div::GPVar('anstellung')!=""){
$joinstring.="INNER JOIN tx_jobvermittlung_inserate_anstellung_mm ON tx_jobvermittlung_inserate.uid = tx_jobvermittlung_inserate_anstellung_mm.uid_local ";
$wherestring.='AND tx_jobvermittlung_inserate_anstellung_mm.uid_foreign="'.$this->piVars["anstellung"].'"';}           
              
$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
  'count(tx_jobvermittlung_inserate.uid)',
  'tx_jobvermittlung_inserate '.$joinstring, 
  $wherestring, 
  $groupBy='',
  $orderBy='',
  $limit=''); 
MySQL abfragen mit JOIN
$SuchText = t3lib_div::_GP('kword');
$joinstring="";
$wherestring="";

$joinstring.="INNER JOIN tx_isisplattform_kategorie ON tx_isisplattform_objekte.idkategorie = tx_isisplattform_kategorie.uid ";
$wherestring='tx_isisplattform_kategorie.kategorie_d Like "%'.$SuchText.'%"';                         
$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
              'tx_isisplattform_objekte.*',#select
              'tx_isisplattform_objekte '.$joinstring, 
              $wherestring, 
              $groupBy='',
              $orderBy='',
              $limit='');  
weiteres Beispiel mit Suchwort
$subpart=$this->cObj->getSubpart($this->template,'###STARTVIEW###');
Nun den Bereichsmarker definieren