Zum Inhalt springen

datenbankabfrage mit mehreren mm relationen

Erstellt am 27. Dezember 2008 · 1 Antwort · letzte Antwort am 5. Januar 2009

Tags: Datenbank, Frage

npre ·

hallo,

ich habe ein projekt, wo die dateneingabe über mehrere true mm datenbankrelationen erfolgt. nun muss ich eine abfrage erstellen und steh ziemlich auf den schlauch. in der tabelle1 werden alle daten eingegeben, dort kann man z. b. mehrere kategorien (mm) und mehrere länder (mm) zuweisen. nun möchte ich alle einträge in der tabelle1 abfragen, die die kategorie-id z. b. 2 und die länder-id 4 haben.

hab mal versuchsweise ein konstrukt mit exec_SELECT_mm_query gebaut, funktioniert aber nur mit 1 mm datenbank:

$resListeLaender=$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query(
			'tx_myext_touren.*, tx_myext_land.land' ,
			'tx_myext_touren',
			'tx_myext_touren_laender_mm',
			'tx_myext_land',
			' AND tx_myext_touren.deleted = 0 AND tx_myext_touren.hidden = 0 AND tx_myext_touren_laender_mm.uid_foreign='.$gewaehltesLand.'',
			'', # groupBy
			'', # orderBy
			$limit=$this->piVars['pointer']*3 . ',3'  #limit
			);

mit 2 kommt leider nix:

$resListeLaender=$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query(
			'tx_myext_touren.*, tx_myext_land.land, tx_myext_kategorie.kategorie' ,
			'tx_myext_touren',
			'tx_myext_touren_laender_mm AND tx_myext_touren_kategorie_mm',
			'tx_myext_land AND tx_myext_kategorie',
			' AND tx_myext_touren.deleted = 0 AND tx_myext_touren.hidden = 0  AND tx_myext_touren_kategorie_mm.uid_foreign = 3 AND tx_myext_touren_laender_mm.uid_foreign='.$gewaehltesLand.'',
'', # groupBy
			'', # orderBy
			$limit=$this->piVars['pointer']*3 . ',3'  #limit
			);

hat jemand eine idee, wie das funktionieren könnte?

npre ·

nachdem ich keine lösung gefunden habe, habe ich die mm aufgelöst und das ganze mit der komma-liste gemacht:

#Laender ermitteln
		if($record['laender']) {
			$LaenderArray = explode(",", $record['laender']);
			foreach($LaenderArray as $ausgabeLaender)
				{	
					$queryLaender = ('SELECT tx_myext_land.land, tx_myext_land.uid
					FROM tx_myext_land  
					WHERE tx_myext_land.uid = '.$ausgabeLaender.''
					);     
					$resLaender = $GLOBALS['TYPO3_DB']->sql_query($queryLaender);
					$rowLaender = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($resLaender);
					//Beistrich und Leerschritt hinter jedem Ergebnis setzen
					$sVarLaender .= $rowLaender['land'].", ";
					
			}
			$markerArray['###LAENDER###'] = substr($sVarLaender, 0, -2);