Moi
Osaakos kukaan auttaa tällaisen kyselyn kanssa:
Haluan tehdä kyselyn joka vertailee kolmea eri kentää samasta taulusta. Tauluni näyttää tältä:
[alkamisaika] [loppumisaika] [laite IP] [vika]
11.9 12:00 11.9 12:02 111 xxx
11.9 12:00 11.9 12:02 111 yyy
11.9 12:08 11.9 12:12 112 xxx
Tällaisesta taulusta haluan poistaa sellaiset "viat" joilla on sama alkamis/loppumis aika sekä IP. Ja näistä haluan poistaa vain ne joiden vika on yyy. Eli siis en halua poistaa kaikkia vikoja yyy vaan vain ne yyy:t millä ovat nuo alkamis/loppumis ajat ja IP samat muiden kanssa.
Joten osaakos joku auttaa miten lähteä tekemään tuollaista vartailua?
Osaakos kukaan auttaa tällaisen kyselyn kanssa:
Haluan tehdä kyselyn joka vertailee kolmea eri kentää samasta taulusta. Tauluni näyttää tältä:
[alkamisaika] [loppumisaika] [laite IP] [vika]
11.9 12:00 11.9 12:02 111 xxx
11.9 12:00 11.9 12:02 111 yyy
11.9 12:08 11.9 12:12 112 xxx
Tällaisesta taulusta haluan poistaa sellaiset "viat" joilla on sama alkamis/loppumis aika sekä IP. Ja näistä haluan poistaa vain ne joiden vika on yyy. Eli siis en halua poistaa kaikkia vikoja yyy vaan vain ne yyy:t millä ovat nuo alkamis/loppumis ajat ja IP samat muiden kanssa.
Joten osaakos joku auttaa miten lähteä tekemään tuollaista vartailua?
Vastaukset 1
Vanhimmat
Jotain ideaa alla. Lähtisin itse tekemään tätä siten, että luetaan kyseistä taulua ikäänkuin kahtena eri tauluna vaikkapa in- tai exists-alikyselyn avulla. Ehkä tämä toimisi:
select alkamisaika, loppumisaika, laite_ip, vika
from taulu as t
where (alkamisaika,loppumisaika,laite_ip) not in (
select alkamisaika,loppumisaika,laite_ip
from taulu as j
where j.vika='yyy'
);
ja poisto ehkä näin:
delete from taulu
where (...) not in ( ... );