Ciao a tutti,
non riesco proprio a venire a capo di come utilizzare i filtri CQL. In un processo sto cercando di filtrare gli Asset (reference) in base allo stato ammnistrativo (lookup) e allo stato tecnico (lookup).
I seguenti filtri funzionano:
from Computer where (TechnicalStatus != "broken")
from Computer where (AdministrativeStatus = "not assigned")
from Computer where (AdministrativeStatus = "not assigned" or AdministrativeStatus = "")
se provo a fare qualcosa di diverso, come ad esempio usare l'operatore AND i filtri non funzionano, cioé è come se il filtro non esistesse:
from Computer where (TechnicalStatus != "broken" and AdministrativeStatus = "not assigned")
Esistono degli esempi un po' più articolati rispetto a quelli del manuale per amministratori?
Grazie
Paolo Larcheri
Ciao Paolo,
anche io in passato ho avuto di questi problemi, alla fine ho preso l'abitudine di adottare un workaround : spostare la logica in una query o vista SQL.
Ad esempio io avrei scritto il filtro CQL così :
from Computer where Id IN /(select "Id" from "Computer" where "TechnicalStatus" != 'broken' AND "AdministrativeStatus"='not assigned' )/
spero possa esserti utile, nel frattempo rimango sintonizzato, anche io sarei interessato ad eventuali altri esempi in CQL.
Un saluto,
Alessandro Grillini
Previously Paolo wrote:
from Computer where (TechnicalStatus != "broken" and AdministrativeStatus = "not assigned")
Inizio a dubitare che l'operatore logico
and
sia supportato.
Potete gentilmente confermarlo così mi rassegno e smetto lottare contro i mulini a vento?
Grazie
PL
Buongiorno Paolo,
l'operatore
and in CQL è supportato nella sua forma contratta
&
. La query corretta perciò risulta essere:
from Computer where TechnicalStatus!='broken' & AdministrativeStatus='not assigned'
provvederemo quindi a correggere il manuale in questo senso.
In ogni caso anche la soluzione proposta da Alessandro è corretta (e può tornare sicuramente utile per la composizione di query più complesse) nella forma:
from Computer where Id in (/(select "Id" from "Computer" {WHERE_CLAUSE})/)
Dove {WHERE_CLAUSE} è una clausola where complessa a piacere a cui possono essere passati anche parametri {client:...} o {server:...}. La query SQL scritta all'interno delle parentesi (/(...)/) può essere anche facilmente testata con strumenti di interrogazione del datatabse (sostituento opportunamente le variabili con i corrispondenti valori di test).
Alberto