所以我有3张桌子:
proveedor: _ID descripcion
ALMACEN: _ID descripcion
Cab_ing _ID descripcion cod_proveedor cod_almacen FOREIGN KEY(cod_proveedor)REFERENCES provedores(_id) FOREIGN KEY(cod_almacen)REFERENCES almacenes(_id)
执行此查询时:
c = db.rawQuery(
" SELECT "
+ "a."+KEY_ROWID + " AS _id,"
+ "a.cod_agencia AS cod_agencia" + ","
+ "a.fecha AS fecha" + ","
+ "b.descripcion AS cod_proveedor" + ","
+ "c.descripcion AS cod_almacen" + ","
+ "a.estado AS estado" + ""
+ " FROM "
+ "cab_ings a, proveedores b, almacenes c"
+" WHERE a.cod_proveedor = b._id AND a.cod_almacen = c._id",null);
它没有显示任何东西,但是当我将“b._id”变为“0”时,例如它显示。 我不知道为什么,但我认为是参考问题。
编辑:
我想要两个表的值(descripcion),这就是为什么我使用传统查询a.id1 - > b.id AND a.id2 - > b.id
Proveedor表
ID descripcion
1 R*1005
2 R*10335
Almacen表
ID descripcion
3 a*10
6 a*12
Cab_ing表
ID cod_proveedor cod_almacen
1 1 3
2 2 3
答案 0 :(得分:0)
它可能与您引用Proveedor
和Almacen
表的主键的方式有关。在您的示例DDL中,该字段名为ID
,但在联接中,引用了_id
字段。 (可能是指select
中的别名?)
我创建了以下表格:
CREATE TABLE "Proveedor" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "descripcion" VARCHAR)
CREATE TABLE "Almacen" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "descripcion" VARCHAR)
CREATE TABLE "Cab_ing" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "cod_proveedor" INTEGER, "cod_almacen" INTEGER)
...然后插入您在上面指定的相同测试数据。使用此查询:
select
cab.ID as _id,
pro.descripcion as cod_proveedor,
alm.descripcion as cod_almacen
from
Cab_ing cab
inner join Proveedor pro on cab.cod_proveedor = pro.ID
inner join Almacen alm on cab.cod_almacen = alm.ID
...我得到两行返回: