2012-04-13 10 views
0

Ich habe eine Tabelle Kunde, eine Tabelle mit verschiedenen Kriterien (Diese Kriterien werden dann verwendet, um Bewertungen zu machen). Eine andere Tabelle enthält die Werte und ihre Schlüssel.Tricky multiple where Bedingung MySQL Query

table company 
============== 
int company_id 
varchar name 
bool status 

table criteria 
============== 
int criteria_id 
varchar name 
bool status 


table company_criteria 
============== 
int company_id 
int criteria_id 
int criteria_value 
varchar comments 

Jetzt i zeigen alle Kriterien in Form von Auswahlboxen, die selbst einen Wert gegen jede Kriterien haben wird (bereits im DB). Jetzt möchte ich, dass der Benutzer nach verschiedenen Firmen suchen kann, die diese spezifischen Kriterien und den gespeicherten Wert haben.

zB: Tabelle Kunde einen Datensatz mit ID 1 Tabelle Kriterien hat Aufzeichnungen 1 ---> Ruf, 2 -> Gehalts

Tabelle company_criteria hat folgende Datensätze:

company_id | criteria_id | criteria_value | 
    ============================================ 
     1   1   10 
     1   2   20 

Jetzt Der Benutzer sieht zwei Auswahlfelder (denken Sie daran, dass in der Kriterien-Tabelle zwei Datensätze vorhanden sind) - mit verschiedenen Optionen. Er wählt 10 aus der ersten Auswahlbox und 20 aus der zweiten Auswahlbox aus. Wie würde ich die Abfrage schreiben - Ich habe folgende

versucht

Es funktioniert einfach nicht - gibt mir keine Ergebnisse - immer. Schätze jede Hilfe - danke.

Antwort

0

Wahrscheinlich wollen Sie setzen und oder anstelle des UND hier

SELECT DISTINCT `co`.* 
FROM (`company` co) 
JOIN `company_criteria` cc ON `co`.`company_id` = `cc`.`company_id` 
WHERE (`cc`.`criteria_id`=1 AND `cc`.`criteria_value`>=10) OR (`cc`.`criteria_id`=2 AND `cc`.`criteria_value`>=20) 

zwischen den 2, wo die Bedingungen .... sie beide zugleich wahr sein kippe ich denke

+0

Das ist das heikle Thema Hier. Die Tabelle company_criteria wird weitere Datensätze der Firma (id 1) mit jeweils zwei Datensätzen haben (wegen der zwei Datensätze in der Kriterien-Tabelle), jedoch mit anderen Kriterienwerten. eine Gruppe von Kriteriensätzen eines Unternehmens mit unterschiedlichen Werten. Also muss zumindest eine Gruppe zusammenpassen. – owsata

+0

Ihre Frage ist nicht klar, bitte sagen Sie deutlicher, um aussortiert zu werden –