Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 2.939 pregleda

Najnovija ↓

Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 12:36 · pre 234 meseca #1
E, ovako...
evo koda pa da vidimo gde gresim...



Code:
@IDSko bigint,
@IDSkoGod int,
@IDUce bigint,
@PocSkoGod datetime,
@ZavPrvPoGo datetime

as

SELECT     SUM(dbo.tIzostanci.BroCasIzo) AS BrIzo, dbo.tIzostanci.ID_Ucenik, dbo.tPodUce.ID_Ucenik AS Expr1, dbo.tIzostanci.ID_SkoGod, 
                      dbo.tIzostanci.ID_Skola, dbo.tPodUce.Ime, dbo.tPodUce.Prezime, dbo.tSkoGod.ID_SkoGod AS Expr2, dbo.tSkoGod.PocSkoGod, 
                      dbo.tSkoGod.KrajPrvogPG, dbo.tIzostanci.DatIzo
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik INNER JOIN
                      dbo.tSkoGod ON dbo.tIzostanci.ID_SkoGod = dbo.tSkoGod.ID_SkoGod
GROUP BY dbo.tIzostanci.DatIzo, dbo.tIzostanci.ID_Ucenik, dbo.tPodUce.ID_Ucenik,
 dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.ID_Skola, dbo.tPodUce.Ime, 
                      dbo.tPodUce.Prezime, dbo.tSkoGod.ID_SkoGod, dbo.tSkoGod.PocSkoGod, 
                     dbo.tSkoGod.KrajPrvogPG
HAVING      (dbo.tIzostanci.ID_Skola = @IDSko) AND (dbo.tPodUce.ID_Ucenik =@IDUce) AND 
(dbo.tSkoGod.ID_SkoGod = @IDSkoGod) AND (dbo.tIzostanci.DatIzo >  
                      @PocSkoGod) AND (dbo.tIzostanci.DatIzo < @ZavPrvPoGo)



Obratite paznju na HAVING i znakove poredjenja (><),pogotovu u delu gde poredim opseg datuma i rezultat u osnovu na taj opseg. Dobijam rezultat ali ne onaj koji mi je potreban, izgleda obracunava nesto ali ne kontam sta. Posto mu saljem iz klijenta format datum i to onaj njegov DEFAULT a to je MM/dd/yyyy....
Da li uopste moze da se porede datetime typovi kao int i bigint


Izvinjavam se zbog nazgrapnog koda!! ;-)
Re: Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 12:48 · pre 234 meseca #2
Pa npr. mozes koristiti Convert funkciju:
Code:

...
... AND (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, @ZavPrvPoGo, 101))

gde si trebao da taj parametar predvidis kao varchar tip, a ne datetime, pa kao string da ga prosledis tvojoj proceduri.
Re: Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 12:56 · pre 234 meseca #3
aaaa, ja sam bosanac pa malo koci znas.....!! Da stringgg.. Bas sam gledao covert valute ova 101 je American! A moze bilo koji stil na pr. 103 oce li ga SQL S. prihvatiti...?
Re: Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 12:58 · pre 234 meseca #4
Kako ga posaljes - tako ce ga prihvatiti ;) Onaj treci parametar zato i postoji, da CONVERT funkcija zna gde je sta - bukvalno receno.

Inace 103 ti je "dd/mm/yy"
Re: Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 14:23 · pre 234 meseca #6
e ono je super, izbacuje mi sve Od tog pocetnog datuma do zavrsnog datuma ali po datumima za taj opseg.
Znaci ako je pocetni datum 1-sep-2006 zavrsni datum 1-dec2006 lista mi stavke pojedinacno po svakom datumu koji se nadje u tom opsegu.
Mene interesuje zasto nece da mi zbroji stavke npr. broj casova izostanka po datumima u postavljenom opsegu? evo koda:

Code:
SELECT DISTINCT 
                      dbo.tIzostanci.DatIzo AS Expr2, dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.DatIzo AS Expr3, 
                      SUM(dbo.tIzostanci.BroCasIzo) AS brIzo, dbo.tIzostanci.BroCasIzo, dbo.tPodUce.ID_Ucenik AS Expr1, dbo.tPodUce.Prezime, dbo.tPodUce.Ime, 
                      dbo.tIzostanci.DatIzo
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik
GROUP BY dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.BroCasIzo, dbo.tPodUce.ID_Ucenik, 
                      dbo.tPodUce.Prezime, dbo.tPodUce.Ime, dbo.tIzostanci.DatIzo
HAVING      (dbo.tIzostanci.DatIzo > CONVERT(DATETIME, '2006-9-1', 101)) AND (dbo.tIzostanci.ID_Skola = 1) AND (dbo.tIzostanci.ID_SkoGod = 1) AND 
                      (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, '2006-12-1 00:00:00', 101)) AND (dbo.tPodUce.ID_Ucenik = 2)



Izvinjavam se zbog koda!!
Re: Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 15:56 · pre 234 meseca #7
Ako dobro vidim, zato sto ono sto sumiras imas i u SELECT delu, tj. GROUP - ako nesto sumiras, onda ne mozes po tom istom polju i da grupises, tj. mozes, ali nema smisla ;)
Ovako treba:
Code:

SELECT DISTINCT 
                      dbo.tIzostanci.DatIzo AS Expr2, dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.DatIzo AS Expr3, 
                      SUM(dbo.tIzostanci.BroCasIzo) AS brIzo, dbo.tPodUce.ID_Ucenik AS Expr1, dbo.tPodUce.Prezime, dbo.tPodUce.Ime, 
                      dbo.tIzostanci.DatIzo
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik
GROUP BY dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tPodUce.ID_Ucenik, 
                      dbo.tPodUce.Prezime, dbo.tPodUce.Ime, dbo.tIzostanci.DatIzo
HAVING      (dbo.tIzostanci.DatIzo > CONVERT(DATETIME, '2006-9-1', 101)) AND (dbo.tIzostanci.ID_Skola = 1) AND (dbo.tIzostanci.ID_SkoGod = 1) AND 
                      (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, '2006-12-1 00:00:00', 101)) AND (dbo.tPodUce.ID_Ucenik = 2)


Imas tu jos neka polja viska, ali ona "ne kvare".
Re: Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 16:04 · pre 234 meseca #8
Probao sam sa ovim prepravljenim kodom. Nece... Oped grupise po datumu..ne sumira!
Re: Znakovi poredjenja sa DATUMIMA,hm? 22.07.2007. u 16:11 · pre 234 meseca #9
Izvini, nisam procitao detaljno tvoj problem zato sto mi je odmah "izbilo oci" ovo prethodno, ali sam ti u sustini i dao odgovor: Ono po cemu ne zelis da se grupise moras izbaciti iz SELECT i GROUP BY dela upita, a posto ti ovde treba samo suma, onda ti i ne treba GROUP BY deo, kao ni HAVING vec umesto nje moze i WHERE, tako da bi to bilo:
Code:

SELECT SUM(dbo.tIzostanci.BroCasIzo) AS brIzo 
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik
WHERE      (dbo.tIzostanci.DatIzo > CONVERT(DATETIME, '2006-9-1', 101)) AND (dbo.tIzostanci.ID_Skola = 1) AND (dbo.tIzostanci.ID_SkoGod = 1) AND 
                      (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, '2006-12-1 00:00:00', 101)) AND (dbo.tPodUce.ID_Ucenik = 2)

Re: Znakovi poredjenja sa DATUMIMA,hm? 19.08.2007. u 12:56 · pre 233 meseca #12
Za moj ukus imaš previše uslova u upitu za početak
Polni sa nekim jednostavnijom modelom pa ga "do teši" da radi šta ti treba
Svaki korak proveravaj da vidiš da li si na dobrom putu
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme