MySQL-Suche durch mehrere Tabellen abstrakt

patator

Mitglied
Hallo Leute hänge schon seit 2 Tagen an nem Problem.
Habe 2 Tabellen:

Artikel:
artikel_id
fabrikat_id
artikel_name

Fabrikate:
fabrikat_id
fabrikat

Nun gibt es ein Suchformular wo man mit Leerzeichen getrennt Suchbegriffe eingeben kann:

PHP:
	$suchbegriffe       = explode(' ',$_POST['suchbegriff']);
	$anzahlsuchbegriffe = count($suchbegriffe);
	
	$sql  = '';
	
	$sql  = 'SELECT * FROM '.$preffix.'_artikel ';
	
	for($z=0; $z<=$anzahlsuchbegriffe; $z++)
	{
		// Zeile auslassen, wenn Leereintrag da ist
		if(empty($suchbegriffe[$z]))
		{
			continue;
		}

		if($z == 0)
		{
			$sql .= 'INNER JOIN '.$preffix.'_fabrikate ON '.$preffix.'_artikel.fabrikat_id='.$preffix.'_fabrikate.fabrikat_id WHERE fabrikat = "'.$suchbegriffe[$z].'" OR artikel_name LIKE "%'.$suchbegriffe[$z].'%" ';
		}
		elseif($z <= $anzahlsuchbegriffe)
		{
			$sql .= 'AND fabrikat="'.$suchbegriffe[$z].'" OR artikel_name LIKE "%'.$suchbegriffe[$z].'%" ';
		}
	}

Ist ein bischen schwer zu erklären das Problem.
mysql_num_rows wirft mehr Treffer aus wenn ich nach farbrikat suche als nach Artikel_Name.
Das Ergebnis wenn ich nach artikel_name suche stimmt.
Nur der Treffer mit fabrikat nicht.
Da findet er was obwohl nichts das ist.

Habt Ihr vielleicht ne Idee?
 
Der Junktor AND hat einen höheren Rangwert als OR. Deshalb wird die Bedingung wahrscheinlich anders interpretiert als von dir gedacht. Abhilfe schafft das Klammern von zusammengehörigen Ausdrücken.
 
er meinte damit, dass die Verknüpfung von AND anders verknüpfen wird als du willst, es müsste folgendermaßen lauten:
Code:
AND (fabrikat="'.$suchbegriffe[$z].'" OR artikel_name LIKE "%'.$suchbegriffe[$z].'%" )
 
Zurück