0

私は Android アプリケーションで作業しており、アプリケーションのローカル Db で詳細を取得したいと考えています。私が使用しているクエリには内部結合があるため、値は返されません。ただし、同じメソッドで、内部結合なしでクエリを使用すると、値が返されます。私を助けてください

public boolean isAvailableTransitionFile(String MenuName) {

    String query = "select * from Transition_File_Table inner join item_sync on Transition_File_Table.Menuitem_id=item_sync.id where item_sync.itemName=?";
    Cursor cursor = this.db.rawQuery(query,
            new String[] { String.valueOf(MenuName) });
    Log.e("Count", cursor.getCount() + "");
    if (cursor.moveToFirst()) {
        return true;
    } else {
        return false;
    }
}
4

4 に答える 4

1

選択クエリを次のように変更します。

String query = "SELECT * FROM Transition_File_Table 
a INNER JOIN Transition_File_Table b 
ON a.Menuitem_id=b.id WHERE b.itemName=?";
于 2012-07-05T11:54:57.383 に答える
0

rawQueryを使用しないことをお勧めします。あなたの仕事を実行するための便利な代替方法が見つかります。Android のメモ帳の例で素晴らしいアイデアを確認してください。

于 2012-07-05T11:53:38.837 に答える
0

クエリを見ると

select *
from Transition_File_Table 
inner join item_sync 
    on Transition_File_Table.Menuitem_id=item_sync.id 
where item_sync.itemName=?

これにより、Transition_File_Table の行が、Transition_File_Table の Menuitem_id 列が item_sync テーブルの id 列と一致する item_sync の行に結合されます。

結合が結果を返さない場合、これは n 行を結合できることを意味します。つまり、Item_sync ID に、Transition_File_Table の Menuitem_id 列の値と一致する値がないことを意味します。

于 2012-07-05T11:54:07.567 に答える
0

SQL の問題は通常、SQL での間違った構文の使用が原因です。プログラムで使用する前に必ずテストしてください。ここで同様の投稿を見つけました:

Android アプリケーションで 2 つの SQLite テーブルを結合するにはどうすればよいですか?

そして、このコードを試してください:

String query = "select * from Transition_File_Table TF inner join item_sync IS on
TF.Menuitem_id=IS.id where IS.itemName=?";

Cursor cursor = this.db.rawQuery(query,new String[]{String.valueOf(MenuName)});
于 2012-07-05T11:59:50.153 に答える