SQLite 查询给出与 mysql 不同的结果
SQLite query give different result from mysql
我的 sqlite 数据库中有两个 table,第一个 table 名为 supplier
,第二个 table 名为 product
我想做的是通过选择 table_product
中的 id_supplier
来获得 table product
中的 supplier_name
。这是我的查询 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_supplier
但 supplier_name
给我 0
值,但是当我尝试 mysql 中的查询时,我得到了正确的结果。我的问题是:
- 这是 sqlite 的限制还是我的查询有问题?
提前谢谢你。
尝试使用 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'
问题解决了!当我们尝试从多个 table 中查询某些列时,请确保我们通过直接指向列名来获得所需的结果。这是我的正确代码
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;
}
我的 sqlite 数据库中有两个 table,第一个 table 名为 supplier
product
我想做的是通过选择 table_product
中的 id_supplier
来获得 table product
中的 supplier_name
。这是我的查询 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_supplier
但 supplier_name
给我 0
值,但是当我尝试 mysql 中的查询时,我得到了正确的结果。我的问题是:
- 这是 sqlite 的限制还是我的查询有问题?
提前谢谢你。
尝试使用 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'
问题解决了!当我们尝试从多个 table 中查询某些列时,请确保我们通过直接指向列名来获得所需的结果。这是我的正确代码
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;
}