2016-08-29 1 views
0

Ich habe drei Kategorien & Unterkategorien in der Tabelle. Kategorie (Abenteuer, Erholung, Gourmet) UND sub_category (Luft, Ballon etc.)MySQL Query nicht erhalten genaue Ausgabe

Jetzt bin ich Brennen unter Abfrage

select * from products where sub_category Like '%Air%' or 
sub_category Like '%Land%' and category = 'adventure' 
and type = 'experience' and status = 'active' 

Jetzt Problem ist es auch Reihen bekommen, wo Kategorie = Verjüngung. Daher sollte es nur zur Folge hat, wo Kategorie = Abenteuer

+0

Beachten Sie auch, dass "% ..." nicht einen Index verwenden kann, also, wenn es irgendeinen Weg gibt, den Sie vermeiden können, um so besser. – Strawberry

Antwort

4

Sie haben Klammern verwenden arround das oder Statement:

select * from products where (sub_category Like '%Air%' or 
sub_category Like '%Land%')and category = 'adventure' 
and type = 'experience' and status = 'active' 
0

UND Vorrang vor OR hat. Deshalb gibt Ihre Abfrage alles zurück, das eine Unterkategorie wie Luft hat. Sie sollten Ihre Abfrage wie folgt aktualisieren:

select * from products where (sub_category Like '%Air%' or 
sub_category Like '%Land%') and category = 'adventure' 
and type = 'experience' and status = 'active'