confrontare valori di due tabelle diverse

Salve ragazzi ho il seguente problema,ho la seguente query che serve ad inserire un valore A dentro una tabella allarmi in una determinata condizione:

INSERT INTO allrmi SELECT * FROM letture WHERE

letture.A > B AND (SELECT allarmi.ids FROM allarmi WHERE allarmi.ids = letture.ids) IS NULL;

fin qui tutto bene la mia seconda necessita' e di inserire sempre nella tabella allarmi la seconda condizione quella del valore di A < B ma solo dopo aver avunto l'entrata precedente

( A> B) ed ho creato la seguente query:

INSERT INTO allarmi

SELECT * FROM letture WHERE

letture.A > B AND

letture.A < B AND

(SELECT allarmi.ids FROM allarmi WHERE allarmi.ids = letture.ids) IS NULL;

Il problema e' che come un cretino nella tabella letture esiste per ogni ids un solo valore percio' la funzione AND non funziona perche non trova il valore A>B ora vengo al dunque dal momento che A>B risiede nella tabella allarmi come andrebbe scritta la seconda query?

in poche parole mi servirebbe un'entrata nella tabella allarmi con condizione di A<B quando pure nellla tabella allarmi esiste un riga con A>B

inviato 7 anni fa
ricky66
X 0 X

Ciao ricky66,

se ho capito bene il tuo problema non ti basta semplicemente eliminare nella seconda query la condizione letture.A > B ottenendo il seguente risultato:

INSERT INTO allarmi

SELECT * FROM letture WHERE

letture.A < B AND

(SELECT allarmi.ids FROM allarmi WHERE allarmi.ids = letture.ids) IS NULL;

 :bye:

risposto 7 anni fa
zeta80
X 0 X

Ciao zeta80 no la riga con A>B nella tabella allarmi deve rimanere io devo inserire la seconda riga con A < B solo se nella tabella allarmi esiste un valore di A>B e se l'ids coincidono es:

se nella tabella allarmi ho una riga del genere:

A=10 B=5 ids=1

se nella tabella letture ho questa entrata:

A=3 B=5 ids=1 //questa riga e' buona e va inserita nella tabella allarmi

se la tabella allarmi e' vuota perche non ho avuto condizioni di A>B

e se nella tabella letture si presenta la seguente condizione :

A=3 B=5 ids=1//la riga non va' inserita nella tabella allarmi perche' la stessa e' vuota

risposto 7 anni fa
ricky66
X 0 X

Ciao ricky66,

da come hai spiegato il problema ti propongo questa soluzione:

INSERT INTO allarmi

SELECT * FROM letture WHERE

letture.A < letture.B AND

letture.ids IN (SELECT allarmi.ids FROM allarmi);

che inserisce nella tabella allarmi tutte le righe della tabella letture che rispettano la condizione A < B e il cui id č gią presente nella tabella allarmi.

Ovviamente va eseguita dopo la prima query:

INSERT INTO allrmi SELECT * FROM letture WHERE

letture.A > B AND (SELECT allarmi.ids FROM allarmi WHERE allarmi.ids = letture.ids) IS NULL;

 :bye:

risposto 7 anni fa
zeta80
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda