PDA

Ver la Versión Completa : Problema con consulta en SQLITE


salvica
14-03-2009, 21:27:56
Hola a tod@s

Estoy pasando una aplicación que corre en MySql a SQLite y tengo problemas con una consulta en la que que sqlite dice que una columna no existe.

La tabla en cuestión CONTRATOS enlaza otras tres tablas PROPIETARIOS, PROPIEDADES, INQUILINOS y la creo así:

CREATE TABLE contratos (
id_clave INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
id_propietario INTEGER NOT NULL
CONSTRAINT fk_id_propietario
REFERENCES propietarios (id_clave),
id_inquilino INTEGER NOT NULL
CONSTRAINT fk_id_inquilino
REFERENCES inquilinos (id_clave),
id_propiedad INTEGER NOT NULL
CONSTRAINT fk_id_propiedad
REFERENCES propiedades (id_clave),
path_contrato VARCHAR(250),
fecha DATE DEFAULT CURRENT_DATE NOT NULL,
valor REAL DEFAULT 0.0 NOT NULL
)

Luego, accedo a ella con esta consulta

SELECT contratos.ID_CLAVE,
contratos.FECHA,
propietarios.NOMBRE AS PROP_NOMBRE, propietarios.APELLIDO_1 AS PROP_APELLIDO_1, propietarios.APELLIDO_2 AS PROP_APELLIDO_2,
propiedades.TIPO, propiedades.DIRECCION, propiedades.NUMERO, propiedades.PLANTA, propiedades.LETRA,
inquilinos.NOMBRE AS INQ_NOMBRE, inquilinos.APELLIDO_1 AS INQ_APELLIDO_1, inquilinos.APELLIDO_2 AS INQ_APELLIDO_2
FROM propietarios
INNER JOIN (propiedades
INNER JOIN (inquilinos
INNER JOIN contratos
ON inquilinos.ID_CLAVE = contratos.ID_INQUILINO
) ON propiedades.ID_CLAVE = contratos.ID_PROPIEDAD ----> esta es la línea
) ON propietarios.ID_CLAVE = contratos.ID_PROPIETARIO
WHERE STRFTIME("%m", contratos.FECHA) = 4

¿Veis algo raro?

Gracias adelantadas
Salvica

salvica
14-03-2009, 22:39:23
La consulta anterior trata de listar los datos de aquellos contratos que cumplen en el próximo mes, he cambiado la consulta a este modelo y parece que funciona

SELECT contratos.ID_CLAVE, contratos.ID_PROPIETARIO, contratos.ID_PROPIEDAD, contratos.ID_INQUILINO,
contratos.FECHA,
propietarios.NOMBRE AS PROP_NOMBRE, propietarios.APELLIDO_1 AS PROP_APELLIDO_1, propietarios.APELLIDO_2 AS PROP_APELLIDO_2,
propiedades.TIPO, propiedades.DIRECCION, propiedades.NUMERO, propiedades.PLANTA, propiedades.LETRA,
inquilinos.NOMBRE AS INQ_NOMBRE, inquilinos.APELLIDO_1 AS INQ_APELLIDO_1, inquilinos.APELLIDO_2 AS INQ_APELLIDO_2
FROM contratos
INNER JOIN propietarios ON propietarios.ID_CLAVE = contratos.ID_PROPIETARIO
INNER JOIN propiedades ON propiedades.ID_CLAVE = contratos.ID_PROPIEDAD
INNER JOIN inquilinos ON inquilinos.ID_CLAVE = contratos.ID_INQUILINO
WHERE STRFTIME("%m", contratos.FECHA) = "04"

Sabeis explicarme la diferencia entre las dos?

Gracias
Salvica