Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  SQL probleem märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
nexus4
Kreisi kasutaja
nexus4

liitunud: 01.03.2012




sõnum 19.06.2014 18:15:18 SQL probleem vasta tsitaadiga

On tabel nimega TABEL

Tabelis on veerud ID, SÜNDMUS, OBJEKT, AEG

AEG on date, ülejäänud number

---

Oletame, et tabel on õnnetuste kohta ( näiteks metsatulekahju, selline kus mets läheb põlema, kustutatakse ära läheb kohe uuesti jne icon_lol.gif ).

Kui tekib metsatulekahju läheb kohe tabelisse kirja uus ID, olgu selleks siis number xxx1.

Seejärel lisandub sellele metsatulele SÜNDMUS, sündmuseks on ka number yyy1. Sündmuseid on 1 metsatulekahju (ID) kohta mitu, sest mets võib süttida ja kustuda koheselt uuesti (kõik jääb 1 õnnetuse (ID) sisse)

Kuna metsatükke on erinevaid, siis kirja läheb ka OBJEKT, milline metsatükk parasjagu õnnetuses osaleb, olgu see zzz1. (kui kustub näiteks metsatükk zzz1 võib kohe peale selle kustumist põlema minna ka mõni muu metsatükk nt zzz2

Ja lõpuks aeg millal miski SÜNDMUS toimus.


1. Ehk siis, mets läheb põlema, tekib ID xxx1, SÜNDMUS yyy1, OBJEKT zzz1 ja aeg nt. '19.06.2014 10:00'.
2. Nüüd kustutati mets ära, tekib tabelisse sama ID xxx1, aga uus sündmus yyy2, OBJEKT zzz1 ja aeg nt. '19.06.2014 10:05'
3. Mets läks uuesti põlema, tekib tabelisse sama ID xxx1, aga uus sündmus yyy3, OBJEKT zzz1 ja aeg sama või väga vähe erinev '19.06.2014 10:05'
4. Mets kustutatakse, tekib tabelisse ikka sama ID xxx1, uus sündmus yyy4, OBJEKT zzz1, aeg '19.06.2014 10:20'
5. Kõrval olev metsatükk läheb põlema, tekib tabelisse ikka sama ID xxx1, uus SÜNDMUS yyy5, OBJEKT zzzN, 'aeg 19.06.2014 10:21'
6. Mets kustutatakse, sama ID xxx1, uus SÜNDMUS yyy6, OBJEKT zzzN, aeg '19.06.2014 11:05'

Mets enam ei sütti, õnnetus läbi.

Sellist rada vaatleme kui ühte suurt põlengut ja tal on üks ID (hoolimata, et mets juba vahepea oli kustutatud ja siis süttis uuesti)

---

Ehk siis nüüd ilma selle illustreeriva näiteta on TABEL, kus on ID, SÜNDMUS, OBJEKT, AEG.
Kus ühe ID külge on seotud mitu SÜNDMUST, ja iga sündmuse külge üks OBJEKT ja AEG, millal toimus.

Minu soov on saada ühe ID alla kuuluv aeg (lõpp-algus) kõige esimesest süttimisest (iga esimene sündmus on süttimine ja viimane kustumine) kuni kõige viimase kustutamiseni, olenemata mis objekte (metsatukkasid) põleng haaras. OBJEKTID on kindlad väärtused. ID ja SÜNDMUS on iga kandega suurenevad arvud (põhimõtteliselt +1)

beer_yum.gif

Edit, ehk siis antud sissekannete põhjal peaks vastuseks tulema 11:05 - 10:00 = 1h 5m. (Jätame selle aja praegu nii nagu ta on, (vaataks praegu algoritmi,) sellekohta on ka küsimused kuidas neid tabelist võtta, võrrelda ja lahutada kui tabel kuvab ainult kuupäeva, aga tegelikult on seal ka tundi, minutid ja sekundid. Ja tegelikult võivad tulekahjud kesta mitu päeva.)
Kommentaarid: 29 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 26
tagasi üles
vaata kasutaja infot saada privaatsõnum
infidel
HV kasutaja
infidel

liitunud: 31.01.2004



Autoriseeritud ID-kaardiga

sõnum 19.06.2014 19:35:31 vasta tsitaadiga

Ei ole kindel, mis sa täpselt saada tahad, aga vast midagi sellist.
sql:
  1. SELECT
  2. ID,
  3. min(AEG) AS Algus,
  4. max(AEG) AS Lopp,
  5. max(AEG)-min(AEG) AS Kestus
  6. FROM TABEL
  7. GROUP BY ID;

Niimoodi saad igale ID-le vastava kestuse.
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
andre85
HV vaatleja

liitunud: 10.09.2006




sõnum 20.06.2014 17:44:55 Re: SQL probleem vasta tsitaadiga

Kirjutame su probleemi ringi.

Tegemist on metsatulekahjude registriga. Väiksem metsatulekahju võib olla ainult üls põleng, suurem metsatulekahju koosneb mitmest põlengust. Põleng avastatakse mingil ajal ja kustutatakse mingiks teiseks ajaks - põlengul on algus ja lõpp. Põleng on alati seotud mingi metsatukaga. Metsatulekahju on seotud mingi suurema piirkonna ehk metsaga.

Tegelikult on sul 2 tabelit - metsatulekahi ja põleng. Metsatulekahi algab esimese ja lõpeb viimase põlenguga. Edasi toimeta ise... icon_smile.gif

nexus4 kirjutas:
On tabel nimega TABEL

Tabelis on veerud ID, SÜNDMUS, OBJEKT, AEG

AEG on date, ülejäänud number

---

Oletame, et tabel on õnnetuste kohta ( näiteks metsatulekahju, selline kus mets läheb põlema, kustutatakse ära läheb kohe uuesti jne icon_lol.gif ).

Kui tekib metsatulekahju läheb kohe tabelisse kirja uus ID, olgu selleks siis number xxx1.

Seejärel lisandub sellele metsatulele SÜNDMUS, sündmuseks on ka number yyy1. Sündmuseid on 1 metsatulekahju (ID) kohta mitu, sest mets võib süttida ja kustuda koheselt uuesti (kõik jääb 1 õnnetuse (ID) sisse)

Kuna metsatükke on erinevaid, siis kirja läheb ka OBJEKT, milline metsatükk parasjagu õnnetuses osaleb, olgu see zzz1. (kui kustub näiteks metsatükk zzz1 võib kohe peale selle kustumist põlema minna ka mõni muu metsatükk nt zzz2

Ja lõpuks aeg millal miski SÜNDMUS toimus.


1. Ehk siis, mets läheb põlema, tekib ID xxx1, SÜNDMUS yyy1, OBJEKT zzz1 ja aeg nt. '19.06.2014 10:00'.
2. Nüüd kustutati mets ära, tekib tabelisse sama ID xxx1, aga uus sündmus yyy2, OBJEKT zzz1 ja aeg nt. '19.06.2014 10:05'
3. Mets läks uuesti põlema, tekib tabelisse sama ID xxx1, aga uus sündmus yyy3, OBJEKT zzz1 ja aeg sama või väga vähe erinev '19.06.2014 10:05'
4. Mets kustutatakse, tekib tabelisse ikka sama ID xxx1, uus sündmus yyy4, OBJEKT zzz1, aeg '19.06.2014 10:20'
5. Kõrval olev metsatükk läheb põlema, tekib tabelisse ikka sama ID xxx1, uus SÜNDMUS yyy5, OBJEKT zzzN, 'aeg 19.06.2014 10:21'
6. Mets kustutatakse, sama ID xxx1, uus SÜNDMUS yyy6, OBJEKT zzzN, aeg '19.06.2014 11:05'

Mets enam ei sütti, õnnetus läbi.

Sellist rada vaatleme kui ühte suurt põlengut ja tal on üks ID (hoolimata, et mets juba vahepea oli kustutatud ja siis süttis uuesti)

---

Ehk siis nüüd ilma selle illustreeriva näiteta on TABEL, kus on ID, SÜNDMUS, OBJEKT, AEG.
Kus ühe ID külge on seotud mitu SÜNDMUST, ja iga sündmuse külge üks OBJEKT ja AEG, millal toimus.

Minu soov on saada ühe ID alla kuuluv aeg (lõpp-algus) kõige esimesest süttimisest (iga esimene sündmus on süttimine ja viimane kustumine) kuni kõige viimase kustutamiseni, olenemata mis objekte (metsatukkasid) põleng haaras. OBJEKTID on kindlad väärtused. ID ja SÜNDMUS on iga kandega suurenevad arvud (põhimõtteliselt +1)

beer_yum.gif

Edit, ehk siis antud sissekannete põhjal peaks vastuseks tulema 11:05 - 10:00 = 1h 5m. (Jätame selle aja praegu nii nagu ta on, (vaataks praegu algoritmi,) sellekohta on ka küsimused kuidas neid tabelist võtta, võrrelda ja lahutada kui tabel kuvab ainult kuupäeva, aga tegelikult on seal ka tundi, minutid ja sekundid. Ja tegelikult võivad tulekahjud kesta mitu päeva.)

_________________
andres
Kommentaarid: 8 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 21.06.2014 22:49:46 vasta tsitaadiga

andre85, nii lihtne see pole, mina näen siin tabelitena vähemalt mets, metsatukk ja põleng. Sinna lisandub tõenäoliselt hulk muid tabeleid, mis konkreetse metsa, metsatuka või põlenguga seotud on, aga neid me ilma täiendava infota ei tea. Tabelil metsapõleng pole mõtet või kui, siis vaid indeks tabelina päringute kiirendamiseks.
Samas ma muidugi ei tea, kas teemaalgataja alles loob süsteemi või on juba midagi olemas. Kuna esimene postitus oli piisavalt segane ja puudulik, siis konkreetselt selle case lahenduse suunas ei viitsinud mõtlema hakata. Kui klient sarnase tellimuse esitaks, siis esimese asjana helistaks ja teeks endale asjad selge(ma)ks icon_wink.gif
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
nexus4
Kreisi kasutaja
nexus4

liitunud: 01.03.2012




sõnum 03.07.2014 20:38:56 vasta tsitaadiga

On jah mitu tabelit, mul päring päris mitmest tabelist korraga, aga see:

infidel kirjutas:
Ei ole kindel, mis sa täpselt saada tahad, aga vast midagi sellist.
sql:
  1. SELECT
  2. ID,
  3. min(AEG) AS Algus,
  4. max(AEG) AS Lopp,
  5. max(AEG)-min(AEG) AS Kestus
  6. FROM TABEL
  7. GROUP BY ID;

Niimoodi saad igale ID-le vastava kestuse.


ei töötanud ja ma hallitasin lolliks ennast, aga probla oli selles, et mul oli liskas AEG veerule ka to_char(aeg) ja siis ta jättis ikka kõik alles. Nüüd korras! beer_yum.gif thumbs_up.gif

vist icon_lol.gif
Kommentaarid: 29 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 26
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  SQL probleem
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.