..|| Blog || Produkti/Storitve || MExcel || MDodatki || 300 nasvetov ||..

Access in SQL

Preostalo o MS Pisarni

Access in SQL

OdgovorNapisal/-a Buba » To jul 23, 2019 6:47 pm

Pozdravljeni!
V Access-u želim z SQL poizvedbo izračunati dnevno povprečje.
Zato sem izračunal razliko (stanje_stevca), in število dni (datum).
Razliko števcev sem izračunal tako, da sem dvakrat prebral isti stolpec v tabeli in polja med seboj odštel.

Zakaj ne gre na podoben način ošteti še datumov ?
(Poizvedba dela, če izbrišem tisto, kar je med zvezdicama, sicer pa ne.)


Koda: Izberi vse
SELECT t.imeMM,
             t.datum,
             t.stanje_stevca,
                         
             */ (t.[datum]-[prev_date]) AS st_dni
                 FROM (SELECT t.*, (SELECT TOP 1 datum
                                              FROM tblPromet AS t2
                                              WHERE t2.datum < t.datum AND t.imeMM=t2.imeMM
                                              ORDER BY t2.datum desc) AS prev_datum, */

              (t.[stanje_stevca]-[prev_value]) AS razlika
              FROM (SELECT t.*, (SELECT TOP 1 stanje_stevca
                                              FROM tblPromet AS t2
                                              WHERE t2.datum < t.datum AND t.imeMM=t2.imeMM
                                              ORDER BY t2.datum desc) AS prev_value


FROM tblPromet AS t
WHERE t.datum <= #6/15/2018#
ORDER BY imeMM, t.datum)  AS t;


Accessov urejevalnik za SQL je zelo trd, zato mi Accesova pomoč ni ravno v pomoč.

Pa lep dan!
Buba
Buba
Buba
 
Prispevkov: 83
Pridružen: Sr mar 12, 2008 11:49 am
Kraj: Maribor



Matjazev.NET
 

Re: Access in SQL

OdgovorNapisal/-a admin » To jul 23, 2019 8:21 pm

Pozdravljeni,

Verjetno vam bom težko pomagal, ker nimam vaših podatkov in ne vem kako izgledajo, kar je za SQL izjemnega pomena. Pa vendar. Da bi vam vsaj poskušal pomagati mi boste morali povedati več. Povedati mi namreč morate vsaj, kaj natančno vam Access javi. Kakšno napako javi?
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
 
Prispevkov: 3530
Pridružen: Sr jul 20, 2005 10:06 pm

Re: Access in SQL

OdgovorNapisal/-a Buba » Če jul 25, 2019 9:52 pm

Pozdravljeni!
Access izpiše:
"Sintaksna napaka v stavku FROM!"

[codeID ime merilnega mesta št. števca datum stanje števca enota
1 Ribnisko selo 1.6.2018 15650 m3
2 Rozna dolina 2.6.2018 5230 m3
3 Ribnisko selo 2.6.2018 15655 m3
4 Trcova 1.6.2018 222 m3
5 Rozna dolina 3.6.2018 5350 m3
6 Rozna dolina 15.6.2018 5410 m3
7 Trcova 16.6.2018 250 m3
8 Ribnisko selo 20.6.2018 15700 m3
9 Ribnisko selo 29.6.2018 15731 m3
10 Ribnisko selo 30.6.2018 15740 m3
11 Trcova 30.6.2018 260 m3
12 Trcova 15.7.2018 270 m3
13 Trcova 31.7.2018 285 m3][/code]

Poizkusil sem priložit še podatke, a ne vem če bo kaj koristilo.
Podatki so v navadni Acessovi tabeli. Zaenkrat še ni povezana z drugimi tabelami.
Polje imeMM je kratko besedilo, datum je format datum/ura, stanje_stevca je format število.

Lep dan!
Buba
Buba
Buba
 
Prispevkov: 83
Pridružen: Sr mar 12, 2008 11:49 am
Kraj: Maribor

Re: Access in SQL

OdgovorNapisal/-a admin » Pe jul 26, 2019 8:34 am

Pozdravljeni,

Ah, seveda, saj imate sintakso SQL stavka popolnoma napačno - poglejte oklepaje in zaklepaje v vašem SQL stavku, pa boste videli, da vam ne gredo skupaj :(.

Kaj veliko se v sam SQL ne bom spuščal, saj imam občutek da ste ga lepili s pomočjo različnih vodičev. Jaz sem vam spodaj pripel delujoč SQL, v katerem sem tudi poimenoval različne dele SQL-a z različnimi imeni ('t1', 't2', 't3'), tako da se lepo vidi, kam kaj spada:
Koda: Izberi vse
SELECT t1.imeMM,
       t1.datum,
       t1.stanje_stevca,
       (t1.stanje_stevca-(SELECT TOP 1 stanje_stevca
                            FROM tblPromet AS t2
                           WHERE t2.datum < t1.datum AND t1.imeMM=t2.imeMM
                           ORDER BY t2.datum desc)) as st_dni,
       (t1.datum-(SELECT TOP 1 datum
                    FROM tblPromet AS t3
                   WHERE t3.datum < t1.datum AND t1.imeMM=t3.imeMM
                   ORDER BY t3.datum desc)) as razlika
  FROM tblPromet AS t1
 WHERE t1.datum <= #6/15/2018#
 ORDER BY t1.imeMM, t1.datum


Kot rečeno poravnajte vaš SQL po oklepajih in boste videli, da vam sploh ne gre skupaj :( ob tem pa ste tudi prevečkrat tabelo poimenovali 't' in potem sploh ne veste na katero poizvedbo se 't' sploh nanaša
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
 
Prispevkov: 3530
Pridružen: Sr jul 20, 2005 10:06 pm

Re: Access in SQL

OdgovorNapisal/-a Buba » Pe jul 26, 2019 9:59 pm

Pozdravljeni!
Res sem nekaj zlepil iz interneta. Očitno narobe. Ko gledam, vašo rešitev se mi zdi vse tako preprosto in logično.
Hvala za pomoč! :D

Lep dan!
Buba
Buba
 
Prispevkov: 83
Pridružen: Sr mar 12, 2008 11:49 am
Kraj: Maribor


Vrni se na Ostalo

Kdo je prisoten

Po forumu brska: 0 registriranih uporabnikov in 3 gostov