» »

mysql if stavek

mysql if stavek

e.r.c. ::

zdravo,

imam sledeč problem, sestavit morem sql poizvedbo in sicer...

SELECT * FROM tabela WHERE datum = 4.9.2013
seveda datum v primernem formatu. zaenkrat vse ok. sedaj pa problem, ko je izbran datum na dan ponedeljka bi morala biti poizvedba oblikovana kot...
SELECT * FROM tabela WHERE datum BETWEEN 5.9.2013 AND 7.9.2013

je mogoče to naredit preko ene sql poizvedbe, da to samodejno univerzalno dela?

Mavrik ::

Kaj v smislu


... WHERE (DAYOFWEEK(datum) = 2 AND datum BETWEEN 5.9.2013 AND 7.9.2013) OR (DAYOFWEEK(datum) != 2 AND datum = 4.9.2013)

The truth is rarely pure and never simple.

genesiss ::

Kaj pa če bi logiko prestavil iz SQL-a in tam dinamično sestavil query?

Zgodovina sprememb…

  • spremenil: genesiss ()

e.r.c. ::

zna bit kej v stilu Mavrika :) hvala
ne, logike ne morm drugje sestavljat, gre se izključno za sql.

shovty ::

Mogoče kaj v tem smislu:
SELECT * FROM tabela WHERE datum BETWEEN izbran_datum+1 AND izbran_datum+3

Ne razumem točno vprašanja.

e.r.c. ::

problem je v tem, da kadar naj bi bil izbran katerikoli datum od torka do petka pokaže podatke za dotični datum, ko pa je izbran datum na dneve med soboto do ponedeljka pa v vsakem primeru podatke za vse te tri dneve. :)

bolj jasno?

shovty ::

select *
from tabela
where date between decode(to_char(izbran_datum, 'd'),1,izbran_datum-3,izbran_datum) and decode(to_char(izbran_datum, 'd'),1,izbran_datum+1,izbran_datum+1)

Nekaj v tem stilu. Sicer je to delano na oracle bazi, ampak bi moralo biti podobno se mi zdi.
Narejeno je pa samo za ponedeljek. Potrebno bi še bilo dodati za soboto in nedeljo.

e.r.c. ::

bom stestiral tole, hvala :)

zdej pa da ravno ne odpiram nove teme, recimo da imam tabelo (ločeno z podpičji):
id_key; datum; znamka; paket; kolicina
1; 2013-08-04; vw; 2; 20
2; 2013-08-05; audi; 1; 15
3; 2013-08-05; audi; 3; 35
4; 2013-08-05; honda; 3; 44
5; 2013-08-06; audi; 1; 78


in sedaj ko iz baze pobiram po datumu, želim, da mi po vrsticah izpiše vse možne artikle, v primeru 5.8. audi in hondo, torej 2 vrstici, v vrstici pa tudi vse količine paketov:

znamka; kolicina paket 1; kolicina paket 2; kolicina paket 3
audi; 15; 0; 35
honda; 0; 0; 44


je pa vedno tako, da se kolicine paketov ne podvajajo, torej ni potrebno seštevati sume za določeno številko paketa ta dan.

tole mi nikakor negre sestaviti ne z union, ne z joini, ne in ne, help, help!! :)
ps: samo v sql poizvedbi! če bi lahko kombiniral za kakeršnem koli jezikom mi nebi bil tole problem :D

MrStein ::

select datum, znamka ,
sum(paket_1) as paket_1,
sum(paket_2) as paket_2, 
sum(paket_3) as paket_3
from (
select datum, kolicina AS paket_1 , 0 as paket_2 , 0 as paket_3 from tabela where paket=1
union
select datum, 0 as paket_1 , kolicina AS paket_2 , 0 as paket_3 from tabela where paket=2
union
select datum, znamka, 0 as paket_1 , 0 as paket_2 , kolicina AS paket_3 from tabela where paket=3
) group by datum, znamka


Lahko bi (UN)PIVOT uporabil, če MySQL to podpira.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

MrStein ::

Tule je še malo bolj preprosta rešitev z DECODE : http://www.oracle-base.com/articles/11g...
(v petem okvirju)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

MySQL izpis vsebine iz dveh tabel

Oddelek: Programiranje
91071 (959) iMark
»

SQL query za datume, ki se ne prekrivajo

Oddelek: Programiranje
212435 (2066) omnimint
»

SQL poizvedba

Oddelek: Programiranje
152084 (1594) borchi
»

[SQL] časovno obdobje

Oddelek: Programiranje
71319 (1147) R33D3M33R
»

urejanje - mysql -

Oddelek: Izdelava spletišč
61148 (1064) darh

Več podobnih tem