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:

MySQL abfragen mit JOIN
$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=''); 
weiteres Beispiel mit Suchwort
$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='');  
Nun den Bereichsmarker definieren
$subpart=$this->cObj->getSubpart($this->template,'###STARTVIEW###');
War das Ihnen eine Hilfe? ein "LIKE" wäre ein tolles "Dankeschön"