2011-07-31 11 views
0

イム、私は1つのテーブルに保存された質問、別のテーブルで、その後のカテゴリーを得ました。質問が複数のカテゴリーに入るように関係テーブルを設定しました。だから、質問が5のIDを持っており、3種類のカテゴリで、関係テーブルだからこのAndroidのSQLiteのクエリに複数のテーブル

relation_id, question_id, category_id 
    1   5   1 
    2   5   2 
    3   5   3 
    4   6   1 

ようになり、その言って、私は1のCAT_IDを持つすべての質問を取得したいと言う、私は2を取得する必要があります結果。それは基本的に私がやろうとしていることです。

答えて

2

を解除します。

select q.question, q.answer 
from questions q 
join relationship r on q.question_id = r.question_id 
where r.cat_id = 1 

I結合構文をANSIにスイッチをしました明示的なバージョンは特定のタイプのエラーを回避するのに役立つため、WHERE句の暗黙の結合条件ではなく、特に、ANSIジョインは、偶発的なクロスプロダクトを回避するのに役立ちます。これは、categoryのジョイン条件を無視したために、「MySQL形式」のクエリが持つものです。この誤ったクロスプロダクトは、ほぼ確実にあなたの「各アイテムを3回返す」問題の原因です。

+0

構文を修正しました。私の持っているものは今はうまくいく。 – Shaun

+0

私が探しているのは、これをAndroidのSQLiteで動作させるためのステートメントです。 – Shaun

+0

@Shaun:あなたはおそらく['rawQuery'](http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String、%20java.lang) .String []))android.database.sqlite.SQLiteDatabase(またはその友人の1人)。 –

1
SELECT q.question, q.answer 
FROM questions q 
left join category c on q.catID = c.catID 
left join relationship r on q.relID = r.relID 

あなたは1のcat_idを持つすべての質問をしたい場合は、このようないくつかのものは、あなたがこの希望、トリック

関連する問題