Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SQL pomoc.Hitno!

[es] :: Access :: SQL pomoc.Hitno!

[ Pregleda: 4310 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

darkog
Obrenovac

Član broj: 82291
Poruke: 147
*.yubc.net.



+1 Profil

icon SQL pomoc.Hitno!11.06.2007. u 23:31 - pre 204 meseci
Trebam da napravim upit koji racuna sumu razlika?
Polja su :datumObilaska,zaposleniID,BrojObilaska,KilometrazaNaSatu.

Za jedan obilazak imam pocetnu i krajnju kilometrazu, broj obilaska, datumObilaska i IDZaposlenog.

Treba da odredim koliko je koji zaposleni presao u jednom danu?
Znaci zaposleni krene sa posla, pocetna kilometraza npr.100km, zatim posle prvog obilaska km sat broji 110km, posle drugog 120km itd kilometraza se povecava sa brojem obilazaka.
Ako je pocetna kilometrza = n, onda ce posle zavrsenog prvog obilaska biti n+kmZaPrviObilazak ()
Trebam nekako da sabiram sledece: (kilometreza posle prvog obilaska - pocetna kilometraza) + (kilometraza posle treceg - kilometraza posle drugog) +... i tako dalje?
Svaka pomoc je dobrodosla.
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: SQL pomoc.Hitno!11.06.2007. u 23:40 - pre 204 meseci
Interesantno :)

Code:

SELECT (MAX(KilometrazaNaSatu) - MIN(KilometrazaNaSatu)) AS PredjeniKM, datumObilaska, zaposleniID 
FROM TvojaTabela 
GROUP BY datumObilaska, zaposleniID


Ja to onako, nisam probao.
 
Odgovor na temu

darkog
Obrenovac

Član broj: 82291
Poruke: 147
*.yubc.net.



+1 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 00:54 - pre 204 meseci
Ne valja. Ne znam da li si me razumeo. Treba da sabira razlike.

1. Ako krenem kolima na relaciju Beograd-Mihen
2. Pocetna kilometraza na satu 300 (zadnja tri broja)
3. Do minhena napravim 10 stajanja: Prvo stajanje - lokacija 1 (kilometraza L1km), drugo stajanje - lokacija 2 (L2km), trece - lokacija 3 (L3km),... deseto - Lokacija Minhen (L10km).

Po dolasku u Minhen km sat broji 1300 km.

Ukupna predjena kilometraza treba da se racuna gledajuci na km sat u kolima i to kao suma razlika : (L1km - 300) + (L2km-L1km) + (L3km-L2km) ... + (L10km-L9km).

A mislio sam da je lako :)


 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 06:35 - pre 204 meseci
Cekaj bre, sta tu ima da se "ne razume"? Ako je na satu bilo 300 km kad si krenuo, a kad si stigao 1300 km, onda si presao 1000km, zar ne?

Ako imas u svakom redu podataka KMStart i KMEnd, tj. 2 polja, onda si to trebao da navedes, a ti si naveo da imas:
Citat:
darkog:
Polja su :datumObilaska,zaposleniID,BrojObilaska,KilometrazaNaSatu.

Na osnovu toga sam ti dao SQL.

Moje resenje ne valja jedino ako i neko drugi u toku dana koristi isto to vozilo, ili ako se neke kilometraze ne evidentiraju, da li je to kod tebe slucaj? Ako jeste, onda si me "naveo" na jednostavniju varijantu jer si dao strukturu tabele sa samo jednim poljem za KM, a za resenje ovakvog problema moraju da se evidentiraju bar 2 velicine: Pocetna KM i KrajnjaKM (kao u putnim nalozima).

Mada si u postavljanju problema uspeo i da sam sebi protivrecis, jer na jednom mestu navodis:
Citat:
darkog:Za jedan obilazak imam pocetnu i krajnju kilometrazu, broj obilaska, datumObilaska i IDZaposlenog.


Dakle, konacno nam reci: Da li imas jedno ili dva polja za kilometrazu u tabeli?
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
213.244.228.*

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 09:51 - pre 204 meseci
@goranvuc: Iznervirao si se :)

Cini mi se da se ovde radi o podacima u jednoj koloni.

Cesto se desava da problem nije dovoljno jasno definisan. U postavljanju SQL pitanja bi trebalo insistirati na tri stvari:
1. strukturi podataka
2. test podacima
3. ocekivanom rezultatu
Tada bi se desavalo manje nesporazuma i manje bi se trosilo vreme ljudi koji su voljni da pomognu.

Ja problem vidim na sledeci nacin:
Imamo niz 'a' koji ima 2n clanova (n = 1, 2, 3, ...). Clanovi niza su integeri. Trazena funkcija je f = a[2] - a[1] + a[4] - a[3] + ... + a[2n] - a[2n-1].
Znaci treba sabrati elemente niza tako da parni elementi imaju predznak +, a neparni elementi predznak -. Zadatak se svodi na to da se iz jedne kolone sa recimo podacima:
Code:

1
2
3
4
5
6
7
8

dobiju dve kolone sa podacima
Code:

1 2
3 4
5 6
7 8

Tada je resenje suma podataka druge kolone minus suma podataka prve kolone.
Kako se od podatake iz jedne kolone svaki drugi podatak prebacuje u drugu kolonu? Ovo je bilo prikazano u [SQL mozgalice] Mozgalica broj 7 - dolazak i odlazak s posla


[DOPUNA]
Uzalud i ja gledam u pasulj :) Sada mi se cini da se radi o dve tabele:
1. Posete
2. Kontrolne_tacke_pri_poseti.
U svakom slucaju princip resenja je slican onome koje sam prikazao samo sto tada gornje resenje prikazuje kilometrazu koja se ne racuna u predjenu, pa je krajnje resenje:
krajnja_kilometraza - pocetna_kilometraza - kilometraza_koja_se_ne_racuna.


[Ovu poruku je menjao chachka dana 12.06.2007. u 11:03 GMT+1]

[Ovu poruku je menjao chachka dana 12.06.2007. u 11:04 GMT+1]
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

darkog
Obrenovac

Član broj: 82291
Poruke: 147
*.yubc.net.



+1 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 10:50 - pre 204 meseci
Data je tabela tblObilasci sa terenskim izveštajem zaposlenih, koja se sastoji do datuma, šifre zaposlenog, rednog broja obilaska za taj dan i zadnje 3 cifre sa kilometar sata. Prvi uneti obilazak predstavlja polazak od kuće, a poslednji povratak kući; ostalo su posete kupcima. Potrebno je napraviti upit koji daje podatke o ukupno pređenoj kilometraži po zaposlenom po danu. Nijedan zaposleni dnevno ne prelazi više od 900 km.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
213.244.228.*

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 11:21 - pre 204 meseci
Kako poseta (stajanje!) moze da utice na predjenu kilometrazu (kretanje!)?!?!?!

Ili kako je to Goran rekao
Citat:
goranvuc: Ako je na satu bilo 300 km kad si krenuo, a kad si stigao 1300 km, onda si presao 1000km, zar ne?
Da li se to ponekad automobil teleportuje od kupca do kupca?

Recimo da si dao strukturu tabele. Daj vec jednom i te test podatke i ono sto na osnovu njih hoces da dobijes.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 11:32 - pre 204 meseci
Dakle, ako ja dobro razumem, jedino sto je potrebno dodati mom prvobitnom resenju je slucaj da se obradjuju poslednje 3 cifre (sto nije bilo navedeno u prvobitnoj postavci problema), pa se onda resavanje svodi na resavanje slucaja kada se krene sa 500 (34500 km) a zavrsi sa 200 (35200), tj. zadnja cifra je manja od pocetne. Zbog toga "u igru" mora da udje i redni broj obilaska, zar ne?

Samo te molim da pre konacnog resenja potvrdis ovo sto sam izneo, kao i da nam kazes kog je tipa kilometraza (karakteri duzine 3, ili broj).
 
Odgovor na temu

darkog
Obrenovac

Član broj: 82291
Poruke: 147
*.yubc.net.



+1 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 11:39 - pre 204 meseci
Imam problem sa vezom.
dakle evo zakacio sam tabelu.
Upravo tako kilometraza je data u obliku posledje tri cifrea polje je tipa text. Broj obilaska je bitan u celoj prici

[Ovu poruku je menjao darkog dana 12.06.2007. u 13:21 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
213.244.228.*

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 12:52 - pre 204 meseci
:)
Odlicno si objasnio problem sa sve + i - znakovima, a problem je sto ti je brojac kilometara premali
:)

Code:

SELECT c.date,
       c.EMPLID,
       SUM(c.kraj) - SUM(c.pocetak) + Iif(SUM(c.pocetak) <= SUM(c.kraj), 0, 1000)
  FROM (SELECT o1.date, o1.EMPLID, o1.Km AS pocetak, 0 AS kraj
          FROM (SELECT t.date, t.EMPLID, Min(t.Num) AS min_num
                  FROM tblObilasci AS t
                 GROUP BY t.date, t.EMPLID
               ) AS a
               INNER JOIN
               tblObilasci AS o1
                 ON o1.date = a.date
                AND o1.EMPLID = a.EMPLID
                AND o1.Num = a.min_num
         UNION ALL
        SELECT o2.date, o2.EMPLID, 0, o2.Km
          FROM (SELECT t.date, t.EMPLID, Max(t.Num) AS max_num
                  FROM tblObilasci AS t
                 GROUP BY t.date, t.EMPLID
               ) AS b
               INNER JOIN
               tblObilasci AS o2
                 ON o2.date = b.date 
                AND o2.EMPLID = b.EMPLID
                AND o2.Num = b.max_num
       ) AS c
 GROUP BY c.date, c.EMPLID

Eto komplikovanog resenja primerenog komplikovano postavljanom problemu :)

"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

darkog
Obrenovac

Član broj: 82291
Poruke: 147
*.yubc.net.



+1 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 12:57 - pre 204 meseci
chachka svaka cast izgleda dobro.Bas sam se obradovao a sad cu malo da prostudiram upit. Hvala
 
Odgovor na temu

darkog
Obrenovac

Član broj: 82291
Poruke: 147
*.yubc.net.



+1 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 13:17 - pre 204 meseci
Jel moze malo pojasnjenje :(
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
213.244.228.*

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 14:06 - pre 204 meseci
Moze pojasnjenje :)

Izdelicu upit na 6 delova i svaki deo cu oznaciti brojem i sa begin i end (valjda ce biti jasno). Svaki deo se moze zasebno izvrsavati, pa bi vec tako trebalo da bude jasnije sta se desava.
Code:

-- 6 begin
SELECT c.date,
       c.EMPLID,
       SUM(c.kraj) - SUM(c.pocetak) + Iif(SUM(c.pocetak) <= SUM(c.kraj), 0, 1000)
  FROM (
  -- 5 begin
    -- 2 begin          
        SELECT o1.date, o1.EMPLID, o1.Km AS pocetak, 0 AS kraj
          FROM (
      -- 1 begin
                SELECT t.date, t.EMPLID, Min(t.Num) AS min_num
                  FROM tblObilasci AS t
                 GROUP BY t.date, t.EMPLID
      -- 1 end       
               ) AS a
               INNER JOIN
               tblObilasci AS o1
                 ON o1.date = a.date
                AND o1.EMPLID = a.EMPLID
                AND o1.Num = a.min_num
    -- 2 end
         UNION ALL
    -- 4 begin          
        SELECT o2.date, o2.EMPLID, 0, o2.Km
          FROM (
      -- 3 begin          
                SELECT t.date, t.EMPLID, Max(t.Num) AS max_num
                  FROM tblObilasci AS t
                 GROUP BY t.date, t.EMPLID
      -- 3 end          
               ) AS b
               INNER JOIN
               tblObilasci AS o2
                 ON o2.date = b.date 
                AND o2.EMPLID = b.EMPLID
                AND o2.Num = b.max_num
    -- 4 end  
  -- 5 end        
       ) AS c
 GROUP BY c.date, c.EMPLID
-- 6 end

1. deo: Uzima se za svaki dan i za svakog zaposlenog minimalni broj kojim je oznacena poseta. Drugim recima uzima se oznaka prve posete u danu.

2. deo: Za prvu posetu u danu uzima kilometrazu, opet po danu i po zaposlenom. Tu kilometrazu stavlja kao trecu kolonu i oznacava je sa 'pocetak'. Cetvrta kolona je ovde postavljena na 0 jer je to neutralan element pri sumiranju a oznacava 'kraj' to jest krajnju kilometrazu. Dakle u ovom momentu postoji lista svih polaznih kilometraza po danu i po zaposlenom.

3. deo: Slicno prvom delu samo se radi o maksimumu odnosno poslednjoj poseti, dakle uzima se za svaki dan i za svakog zaposlenog maksimalan broj kojim je oznacena poseta. Drugim recima uzima se oznaka poslednje posete u danu.

4. deo: Slican je drugom delu, samo se radi o prikupljanju stanja odometra za poslednju posetu. Za poslednju posetu u danu uzima kilometrazu, opet po danu i po zaposlenom. Tu kilometrazu stavlja kao cetvrtu kolonu i oznacava je sa 'kraj'. Treca kolona je ovde postavljena na 0 jer je to neutralan element pri sumiranju a oznacava 'pocetak' to jest pocetnu kilometrazu. Dakle u ovom momentu postoji lista svih krajnjih kilometraza po danu i po zaposlenom.

5. deo: Jednostavno spaja dva spiska dobijena u drugom i cetvrtom delu.

6. deo: Vrsi se grupisanje i sumiranje liste dobijene u petom delu. SUM ovde vrsi uvek sabiranje dva broja od kojih je jedan uvek 0. S obzirom da su podaci o polaznoj kilometrazi i krajnjoj kilometrazi razdvojeni u dve kolone, ovo grupisanje i sumiranje proizvodi listu sa cetiri kolone:
datum, zaposleni, pocetak, kraj.
Sada jos ostaje da se od kraja oduzme pocetak pazeci na overflow (ako je kraj manji od pocetka treba ga povecati za 1000).
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 15:19 - pre 204 meseci
@Darkog: Za podatke koje si dao, do istog rezulata koji je izracunao Chacka moze se doci i na jednostavniji nacin.
Zakacio sam fajl sa svim potrebnim kverijima. Ukljucen je i kveri koji jke dao Chachka.

Meni se cini logicnim ono sto Goran tvrdi - dnevni predjeni kilometri = [poslednje citanje] - [prvo citanje]

Problem je sto pamtis samo 3 cifre, pa prvo citanje bude 900 a sledece bude 39. Kako oduzeti 900 od 39 - pa pomocu kompjutera.
Ja sam napravio dva kverija. Prvi kveri se zove 'Z_Pocetak' i resava problem tri cifre, a glasi ovako:
Code:

SELECT tblObilasci.date, tblObilasci.EMPLID, tblObilasci.Num, IIf(CInt([Km])<100,1000+CInt([km]),CInt([km])) AS StanjeKM
FROM tblObilasci
ORDER BY tblObilasci.date, tblObilasci.EMPLID, tblObilasci.Num;

Mozda IIf koji obracunava cifre treba drugacije odraditi, ovo moje je prilicno klimavo, ali za podatke koje si dao radi. Problem bi se resio sam od sebe kad bi uzimao sve cifre sa brojaca kilomatara. Ovako, neke mumbo-jumbo formule su potrebne da se resi problem.

Zavrsni kveri je 'Z_Kraj' i glasi ovako (kao sto je i Goran napisao):
Code:

SELECT Z_Pocetak.date, Z_Pocetak.EMPLID, Max(Z_Pocetak.StanjeKM) AS MaxOfStanjeKM, Min(Z_Pocetak.StanjeKM) AS MinOfStanjeKM, Max([StanjeKM])-Min([StanjeKm]) AS PredjeniKilometri
FROM Z_Pocetak
GROUP BY Z_Pocetak.date, Z_Pocetak.EMPLID;

Ovo je Goranov kveri. Ono sto Goran nije znao (jer mu nisi rekao) u momentu kad je pravio kveri je da cuvas samo tri cifre, pa bi njegov kveri davao pogresne rezultate.

SItem kverija koji sam predlozio daje iste rezultate kao kveri koji je postavio Chachka (provereno red po red i rucno). Zasto? Zato sto su podaci koje si dao takvi da vozilo nije bilo korisceno ni za sta drugo osim za obilaske kupaca. Znaci tacno jedan vozac svakog dana, i pravi samo obilazske kupaca i nikakve druge voznje. Ako je ovo ispunjeno uvek, onda dva kverija koje sam dao zavrsavaju posao. Ako vozilo koristi vise vozaca i ima putovanja koja se ne racunaju, onda moje resenje (i Goranovo) nece biti dobro.

Medjutim, primer obracuna koji is ti dao glasi (citirano iz tvoje poruke):
Citat:

Do minhena napravim 10 stajanja: Prvo stajanje - lokacija 1 (kilometraza L1km), drugo stajanje - lokacija 2 (L2km), trece - lokacija 3 (L3km),... deseto - Lokacija Minhen (L10km).


Malo pisnja i dobijamo:
Put = (Pocetak-L1) + (L2-L1) + (L3-L2) + (L4-L3) + (L5-L4)+...+(L8-L7)+(L9-L8) + (L10-L9) + (Kraj - L10)

U ovom izrazu (koji si ti dao, nisam ja izmislio nista) svi sabirci osim Pocatik i Kraj se javljaju dva puta, jednom pozitivni, jednom negativni, kad se oslobodimo zagrada oni se svi poniste i ostaje samo:

Put = Kraj - Pocetak,

to jest ono sto ti je Goran rekao na pocetku.

@Chachka: Ne znam zasto bi se sabiralo (a2-a1) + (a4-a3) + (a6-a5)....
Sta se desilo sa (a3-a2) i zasto to ne bi uslo u racun? Mi uporno pitamo ima li deonica koje se ne racunaju, i Darkog nam uporno ne odogovara, a svi primeri kojje je dao ukazuju na situaciju 'jedan covek uzme auto i obilazi kupce ceo dan i na kraju vrati auto u garazi, zapise kilometrazu i tu je kraj price'. Dakle, nema razloga da se ne uzme u obzir (a3-a2). Sve dok nam Darkog ne kaze drugacije.

Meni pre lici da se ovde radi o bukvalnom prevodjenju papirnog obrasca na racunar. Na papiru, svako je posle svakog obilaska izracunavao kilometrazu izmedju dve tacke pa na kraju to sabirao. Cak i na papiru je jednostavnije oduzeti pocetnu kilometrazu od zavrsne. Deluje mi da je pesacki postupak na papiru bio nepotrebno komplikovan, pa i kompjutersko resenje koje bukvalno prevodi papirni postupak, ne moze mnogo pametnije. Usput, zasto bi se kilometri cuvali kao tekst a ne kao recimo integer?

:-)
Prikačeni fajlovi
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 16:13 - pre 204 meseci
Citat:
Zidar: @Chachka: Ne znam zasto bi se sabiralo (a2-a1) + (a4-a3) + (a6-a5)....
Sta se desilo sa (a3-a2) i zasto to ne bi uslo u racun?

Zato sto sam gledao u pasulj :)

Iz one pocetne formule iz prvog posta gde se spominju + i - sam pomislio da postoje deonice koje se ne uzimaju u kilometrazu. I ja sam tada primetio da se po njoj dobija:
Put = Kraj - Pocetak.

Ali kada je Goran ostao bez odgovora zasto to nije ispravno - pogledao sam u pasulj.

I pasulj mi je rekao:
Komercijalista krene na teren i to se zapise. Onda on stigne kod prvog kupca i to se zapise. Zavrsi on posetu kod prvog kupca, sedne u auto i krene da se zeza po gradu. E to se ne zapise. Onda komercijalista kaze OK dosta sam se zezao idem kod drugog kupca i onda zapise kilometrazu i krene. Stigne kod drugog kupca i opet zapise kilometrazu. I tako dalje i polaske i dolaske zapisuje u jednu kolonu.

Ni meni nije bilo bas sve jasno. Kod nas u firmi komercijaliste dobijaju lovu za gorivo na osnovu predjenih kilometara. Nije mi bas bilo jasno zasto bi bili toliko posteni pa da ne zapisuju kilometrazu provedenu pri zezanje po gradu?!

Onda sam ponovo pogledao u pasulj :)

I pasulj mi rece: Sta ako se uopste ne radi o kilometrazi i komercijalistima i posetama. Sta ako darkog radi top secret project za BIA-u pa mora da krije pravu prirodu problema?

Definitivno sam gledao u los pasulj (proslogodisnji). Jedva cekam da sazri ovogodisnji :)
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 16:30 - pre 204 meseci
@Zidar: Pogledao sam tvoje resenje i nije dobro. Dodaj
Code:

INSERT INTO tblObilasci (date, EMPLID, Num, Km)
VALUES ('2006-05-01', 224, 4, '113');

i dobijas da je 1.5.2006 zaposleni 224 presao 917 kilometara!

Jednostavno se ne moze u istom upitu (podupitu) koristiti i MIN i MAX. I ja sam se bio zaleteo na slicno resenje.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 16:33 - pre 204 meseci
Ma nema veze, bitno da je to reseno. Da nije bilo nekog tamo "strucnjaka" koji je procenio da je za pracenje celog problema dovoljno da svako zapisuje samo zadnje 3 cifre sa kilometar-sata ne bi dobili ovako interesantan problem. Jeste da u startu postavljac nije bio precizan, ali se posle popravio ;)

Inace, kada se pogledaju podaci koje si poslao, moze se videti da redni broj obilaska bas ne ide uvek od 1, tako da je cak i tu nedoslednost. Ovo je pravi primer kako se, da bi se olaksalo korisnicima i umanjio unos podataka dobija na povecanju kompleksnosti problema, a da to nije ni bilo potrebno.

Sto se tice @chachkinog resenja: no comment!
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 17:06 - pre 204 meseci
Ma da "strucnjak" je u istu tabelu stavio i podatke o posetama i podatke o polasku na put i podatke o dolasku sa puta. Fale jos samo podaci o tankovanju pa da zurka sa putnog naloga bude potpuna.

Ono sto nedostaje modelu je kolona sa vrstom zapisanog dogadjaja, da li se desila poseta, polazak, povratak, tankovanje, rucak, vecera, kvar, sudar, prelazak granice, ...

Spominjao sam mozgalicu 7, zato sto problemi lice. Ali tamo dogadjaje belezi izuzetno glup uredjaj, a u ovom slucaju bi komercijalista bas i mogao da dopise i sta se to desilo.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 17:41 - pre 204 meseci
@Chachka: U pravu si, kao i uvek
Citat:

@Zidar: Pogledao sam tvoje resenje i nije dobro. Dodaj

Code:

INSERT INTO tblObilasci (date, EMPLID, Num, Km)
VALUES ('2006-05-01', 224, 4, '113');




Moje resenje se zasniva na olako uzetoj pretpostavci da nece niko praviti vse od 80-90 km dnevno. Zato sam i rekao da IIF verovatno nije generalno dobar, sasvim slucajno radi dobro za konkretne podatke, ali nije garantovano da bi radio za neke druge podatke.

Moglo bi i sa mIN/MAX, pa ako se dobije negativan rezultat, onda pokusas da ga pretvoris u pozitivan, u zavisnosti od pocetne kilometraze. Kao kad se radi sa satima. Kako oduzeti 6AM od 11PM perthodnog dana, ili 6 ujutru od 23 prethodne noci? 6 -23 = -17 => dodaj 24 sata => -17+24 = 7 sati, sto je tacno, od 11 uvece do 6 ujutru je 7 sati. Za nasu trocifarsku kilometrazu moglo bi:

IF Prethidni_KM > Tekuci_KM
THEN
Razlika = (Prethodni-Tekuci) + 1000
ELSE
Razlika = (Prethodni-Tekuci)
ENDIF

sto u Accessu moze da se skrati kao

Razlika = (Prethodni-Tekuci) + 1000 * (Prethodni>Tekuci) * (-1)

Ako je Prethodni>Tekuci onda se (Prethodni>Tekuci) pretvara u -1 (TRUE), pa ga pomnozimo sa (-1) i onda imamo Razlika = (Prethodni-Tekuci) + 1000

Ako NIJE Prethodni>Tekuci , onda se (Prethodni>Tekuci) pretvara u 0 (FALSE), pa taj sabirak postaje 0 i ostaje nam samo Razlika = (Prethodni-Tekuci)

I sve to pod uslovom da imamo postene komercijaliste.

Nikad mi nije bilo jasno zasto se uopste prate ovakve stvari. Ako sumnjas da te komercijalista potkrada, lako je to dokazati na bezbroj drugih nacina, a ne masirati sve ljude da vode kojekakve zapisnike koje ionako niko ne moze da sabere i proveri. Ako sumnjas na nekoga, posalji nekoga da ga malo prati pa ako stvarno krade, otpusti ga. Danas bar to moze. Ako covek ne krade, sve je lepo. Treba se fokusirati na maksimizovanje prodaje, a ne da li te komercijalista potkrada tako sto u radno vreme ode do svalerke, pa napravi vise km nego sto bi trebalo. Ako ide prodaja, sta koga briga ko se gde vozi i s kim se svarlerise u radno vreme.

 
Odgovor na temu

darkog
Obrenovac

Član broj: 82291
Poruke: 147
*.yubc.net.



+1 Profil

icon Re: SQL pomoc.Hitno!12.06.2007. u 21:07 - pre 204 meseci
Jesam ja postavio temu ali komp se restartuje svaki cas, puca veza ma puca explorer, bas imam poblem.
Sto se tice postavke zadatka ne znam da li ima primenu bas ovakav ali to je samo zadatak za vezbu.
Zadatak je bio jasan, znaci sva kilometraza se broji.
Chachka je napisao upit koji radi u svim situacijama (majstorski nema sta).
Priznajem da ne bih sam mogao da odradim ovaj posao.

@Zidar Probao sam i ja u jedan upit da smestim da smestim min_km i max_km i na prvi pogled je radilo ali kad sam se malo zagledao video sam da ne radi dobro. Tabela na osnovu koje si ti probao ima deo zapisa pa se pogodilo da radi za taj deo zapisa radi.
Nije ni meni jasno zasto je u tabeli tblObilasci polje "km" tipa text.

Hvala svima i priznajte da nije lose za vezbu.

Meni je ovo bilo stvarno hitno i jos jednom se zahvaljujem svima. Imam jos zadataka koji su odlicni za vezbu i sad cu da se bacim za vezbanje.

Sad vidim da pomocu SQL-a moze da se uradi sve sto se zamisli (skoro sve) :)

Pozdrav



 
Odgovor na temu

[es] :: Access :: SQL pomoc.Hitno!

[ Pregleda: 4310 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.