2017-01-16 3 views
-2

を含む表からのSELECT私は初心者です助けてください:列はどちらか

私はSQLの列からのデータがのは、タグの形式のデータが含まれているimage_descriptionを言わせて選択します。例えば、列の1つの項目は「モスクワ、ライト、水、ロシア、夜」である。この列の他の表項目には、同様の形式のデータが入っています。

キーワードを使用してデータを選択し、$ tagという定数に入れたいと思います。したがって、$タグ変数には、上から "モスクワ、ライト、水、ロシア、夜"のいずれかが含まれている場合があります。

私の$ tag変数に単語を含む行を取得するためにSELECT文を作成するにはどうすればよいですか?

+0

単純なSELECTクエリが......適切なデータになる* table_nameのどこからCOLUMN_NAME '%のyour_stringの%' のように選択することができますため

//; –

+0

Juergenが言ったように、あなたのtabels [標準化](http://stackoverflow.com/questions/246701/what-is-normalisation-or-normalization)。画像に属する単一のタグを保存できる別のテーブルを作成することを強くお勧めします。テーブルには 'image_id'と' tag'があります。 イメージに複数のタグがある場合、このテーブルには各タグごとに1つのエントリが複数存在します。 – Cashbee

答えて

0

これはトリックを行う必要があります。

SELECT * FROM your_table WHERE image_description LIKE 'your_tag%';

をそれとも、複数のタグをチェックするだけで、このように、OR条件を追加する場合:this質問アウト SELECT * FROM your_table WHERE image_description LIKE 'your_tag%' OR image_description LIKE 'your_second_tag% OR image_description LIKE 'your_third_tag%;

チェック。

+0

変数に単語が1つのみ含まれている場合にのみ使用します –

+0

@KaiLeanが編集されました。 '' 'for''ステートメントを使用して、' '' OR''条件をqueryStringに追加してください。 –

1

全体ではなく、タグと一致する場合は、単一の列にmulitple値を使用することをお勧め.. いますが、同じ方法を使用している場合は、%文字列のような単純なを使用している場合、この

$string1= yoursting_var.","; 
$string2= ", ".yoursting_var.","; 
$string3=", ".yourstring_var; 
select * from table_name where (column_name like '$string1%' || column_name like '%$string2%' || column_name like '%$string3');.. 

のようなものを試してみてください%、それは他の言葉でも来るいくつかの単語を比較する際に問題を作成します。 「水」や「食べなさい」のように、「ate」で検索すると両方を返します。 mulitple言葉

$words_arr; // this is your words array contain any nummber of words 

$com_string=""; 

foreach($words_arr as $words){ 
    $string1= $words.","; 

    $string2= ", ".$words.","; 

    $string3=", ".$words; 

//make query using loop for all words with AND/OR condition  
    $com_string .= " AND (column_name like '$string1%' || column_name like '%$string2%' ||column_name like '%$string3')"; 

} 

select * from table_name where 1 $com_string; 
+0

Tariqさんありがとうございます。変数の単語数がわからない場合はどうしたらいいですか?あなたの例では3語を使いました。それはシステムによって生成されるので、単語の数が変わることがあります。時には "word1、word2、word3"または時には "word1、word3"または "word1、word3、word7、word4"などとなるでしょう –

+0

あなたのテーブル構造を変更する場合..しかし、この場合、いくつかのトリックが必要です $ words_arr; //これはあなたの言葉の配列で、何桁の言葉も含んでいます $ com_string = ""; foreach($ words_arrを$ words){ $ string1 = $ words。 "、"; $ string2 = "、"。$ words。 "、"; $ string3 = "、"。$ words; // AND/OR条件を持つすべての単語に対してループを使用してクエリを作成します $ com_string。= "AND(column_nameのように '$ string1%' || column_nameのように '%$ string2%' || column_name '%$ string3'のように)"; } select * from table_name where 1 $ com_string; – Tariq

+0

@KaiLeanは、それらをクエリ文字列に追加するだけです。 '' queryString = 'blablaからのSELECT *の行に沿った何か... WHERE condition1; queryString + = 'OR条件2;'; '' ' –

関連する問題