[TYPO3-german] sql-query führt im Frontend zu anderem Ergebnis als über phpMyAdmin

Alisha mail at alisha-huber.de
Thu Oct 21 23:28:31 CEST 2010


Hallo,
ich habe in meiner FE-Extension eine Query eingebaut, die soweit auch 
funktioniert. Nur ist die Ergebnisliste im Frontend oft eine andere als 
als wenn ich die Abfrage direkt in phpMyAdmin ausführe. Im Frontend 
werden oft weniger Datensätze angezeigt.

Es geht um Adressdaten, die alle gleich aufgebaut sind. Jedem 
Adressdatensatz können verschiedene "Kategorien" zugeordnet sein, die in 
einer 1:n - Tabelle liegen ("fe_users_user_xxx").
Die Bearbeitung der Datensätze von fe_users mit diesen Kategorien 
funktioniert im Backend auch einwandfrei. Alle werden korrekt angezeigt.

Die Query, die generiert werden soll: (Beispiel)
SELECT DISTINCT b.uid, b.company, b.name, b.address, b.telephone, 
b.email, b.zip, b.city, b.www FROM fe_users_user_xxx a INNER JOIN 
fe_users b ON b.uid = a.uid_local WHERE b.deleted = 0 AND b.usergroup = 
1 AND b.pid = '47' AND (1 = 1 OR a.uid_foreign = 1 OR a.uid_foreign = 2 
OR a.uid_foreign = 3 OR a.uid_foreign = 4 OR a.uid_foreign = 5 OR 
a.uid_foreign = 6 OR a.uid_foreign = 7 OR a.uid_foreign = 8 OR 
a.uid_foreign = 9 OR a.uid_foreign = 10 OR a.uid_foreign = 11 OR 
a.uid_foreign = 12 OR a.uid_foreign = 13 OR a.uid_foreign = 14 OR 
a.uid_foreign = 17) AND b.static_info_country like 'DEU' AND b.zip like 
'60%'

Diese Abfrage führt bei phyMyAdmin beispielsweise zu 4 Datensätzen, über 
die Extension ausgeführt, werden mir im Frontend nur 3 Datensätze 
ausgegeben. Das geschieht bei mehreren Stichproben und die Inhalte der 
Datensätze geben keinen Hinweis darauf, warum manche nicht gefunden 
werden könnten, sie sind alle gleich aufgebaut und haben auch 
entsprechend zugeordnete Datensätze in der zweiten Tabelle.

ich baue dieses Statement in meiner Klasse so auf:

Der Where-String wird aus den Angaben eines Formulars zusammengestellt. 
In diesem Formular werden per checkbox die gewünschten Werte ausgewählt. 
Zudem wird ein Länderkürzel übergeben und die ersten beiden Ziffern der 
PLZ.
(Code gekürzt...)
$whereString = "AND (1 = 1 ";
foreach ($this->piVars['auswahl'] as $a => $b){
	$whereString.=" OR a.uid_foreign = ".$a;
	$whereString.= ")";
	$whereString.= " AND b.static_info_country like 
'".$this->piVars['land']."' AND b.zip like '".$this->piVars['plz']."%'";
			
			
			
$res = $GLOBALS["TYPO3_DB"]->exec_SELECTquery(
"DISTINCT b.uid,
b.company,
b.name,
b.address,
b.telephone,
b.email,
b.zip,
b.city,
b.www",
"fe_users_user_xxx a INNER JOIN fe_users b ".
"ON b.uid = a.uid_local " ,
"b.deleted = 0
AND b.usergroup = 1
AND b.pid = '".$feUserPid."'
".$whereString, "b.zip");

Ich finde das komplett unlogisch und habe nicht die geringste Idee, 
woran das liegen könnte. Hat hier jemand vielleicht einen Tipp?
Das wäre super!
Danke und Gruß
Alisha


				


More information about the TYPO3-german mailing list