SQLite查询给出了与mysql不同的结果

时间:2015-02-04 08:34:07

标签: android sqlite android-sqlite

我的sqlite数据库中有两个表,这是第一个名为supplier enter image description here的表,这是第二个名为product enter image description here的表

我想要做的是通过选择supplier_name中的table product来获取id_supplier中的table_product。这是我的查询SELECT table_supplier.id_supplier, table_supplier.supplier_name from table_invoice_in, table_supplier where table_invoice_in.id_product = '4' and table_supplier.id_supplier = table_invoice_in.id_supplier

我从该查询得到的是我可以获得id_suppliersupplier_name给我0值,但是当我在mysql中尝试查询时,我得到了正确的结果。我的问题是:

  1. 这是sqlite的限制还是我的查询有问题?
  2. 提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试使用JOIN:

SELECT table_supplier.id_supplier, table_supplier.supplier_name FROM table_supplier JOIN table_invoice_in ON table_supplier.id_supplier = table_invoice_in.id_supplier WHERE table_invoice_in.id_product = '4'

答案 1 :(得分:0)

问题解决了!当我们尝试从多个表中查询某些列时,请确保通过直接指向列名来获得所需的结果。这是我的正确代码

public Cursor SelectInvoiceInById(String id){
    String query = "SELECT product_name from table_product, table_invoice_in where table_invoice_in.id_invoice_in = '"+ id + "' and table_product.id_product = table_invoice_in.id_product";
    ReadDB();
    cursor = database.rawQuery(query, null);
    cursor.moveToFirst();
    if(cursor.getCount() > 0){
        while (!cursor.isAfterLast()){
            Log.d("RESULT", String.valueOf(cursor.getString(cursor.getColumnIndex(SQLiteHelper.PRODUCT_NAME))));
            cursor.moveToNext();
        }
    }
    CloseDB();
    return cursor;
}