2011-11-28 13 views
2

私のデータベースには 'model'という名前のテーブルがあります。ここではこれらのほとんどは、どのように見えるかです:SQLクエリ:Where、Like、OR - Combing these

iphone 4 16gb white t-mobile 

と別:

iphone 4 32gb black kpn 

今、私は、クエリで、これらの異なるiPhoneを選択します。

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND '%16gb%'") or die(mysql_error()); 

「iphone 4」を探して「16GB」を探すようにします。したがって、iPhone 4の出力は16GBのみです。上記のクエリは機能していません。それは私の構文ですか?それともこのようにできないのですか?

+0

取得した結果セットは何ですか?またはエラーが発生していますか? – Ramy

答えて

3

この文字列で検索してください:

SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model LIKE '%16gb%' 

あなたはSQLで次の式を持つことはできません。

model LIKE '%iphone 4%' AND '%16gb%' 

あなたは完全に両方の式を述べる必要があります。

model LIKE '%iphone 4%' AND model LIKE '%16gb%' 
3
$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model LIKE '%16gb%'") or die(mysql_error()); 
0

次のSQLクエリを変更します。

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND '%16gb%'") or die(mysql_error()); 

:あなたのほとんどが

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model LIKE '%16gb%'") or die(mysql_error()); 
0

ができますが、それは

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%16gb%'") or die(mysql_error()); 

ORこのdoesnのを注意して構文です明示的に16ギガバイト

SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model Like'%16gb%' 
0

の比較を述べる必要がありますORDERを考慮に入れる上記はそうです。

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model like '%16gb%'") or die(mysql_error()); 
0

私は問題はあなたがサブクエリを必要とするということだと思い、すなわち

select * 
from (select * from db where model LIKE '%iphone 4%') xx 
where xx.model like '%16gb%' 

内側のクエリは、すべてのiphone 4モデルのセットを構築し、外側のクエリが16ギガバイトを有するものを取得します。..