» »

mysql poizvedba

mysql poizvedba

sebavet ::

zdravo, v mysql imam sledečo tabelo:

id tipa integer,
datumd tipa date,
koda tipa integer,
stanje (4 možnost: "stand by", "on", "off", "waiting") tipa string :),
user tipa string


še opisno: vsak user ima določeno množico kod (5,6,10,100...). Vsaka koda vsakega userja se na določen datum nahaja v enem izmed štirih zgoraj omenjenih stanji.
npr:
1.1.2014   5   "stand by"     poldek
1.1.2014   2   "off"          igor
1.1.2014   5   "on"           jaka
2.1.2014   1   "off"          igor
3.1.2014   1   "stand by"     igor
4.1.2014   2   "stand by"     igor
...   


rad bi naredil poizvedbo, ki bi mi za posameznega (trenutno logiranega) userja izpisala v kakšnem stanju so njegove kode na zadnji vpisan datum. Če je logiran npr: igor je zadnje stanje max(datumd) njegovih kod sledeče

3.1.2014    1   "stand by" 
4.1.2014    2   "stand by"


poskusil sem že:

select koda, stanje, datumd from (select max(datumd) as zadnjidatum from tabela1 where iduser='$user' group by koda) as x join tabela1 on x.zadnjidatum=tabela1.datumd group by koda

in

select max(datumd), koda, stanje from tabela1 where iduser='$user' group by koda


rezultati obojega so napačni. Kakšna ideja, kaj je narobe?

LordVeon ::

SELECT T1.koda, T1.stanje, T1.datumd FROM (SELECT MAX(datumd) AS zadnjidatum, koda, user FROM tabela1 T1 WHERE user='$user' GROUP BY koda) AS x JOIN tabela1 T1 ON x.zadnjidatum=T1.datumd AND x.koda = T1.koda AND x.user = T1.user


Join je bil premalo omejen in je zajel podatke od drugih userjev, končni group by koda nepotreben

sebavet ::

hvala ti, deluje :)

Zgodovina sprememb…

  • spremenil: sebavet ()

sebavet ::

sem bil malo prehiter;
dela na localhostu, dela na serverju phpmyadmin, ne dela pa v php kodi na serverju, za pop.....it ... ne vem kaj bi lahko blo narobe, ker sem vse samo kopiral, nič prirejal ... :)

sebavet ::

$result je prazen, nič ni v mysql queriju. moj prejšnji query, ki ni deloval prav je deloval, ampak ne pravilno
select koda, stanje, datumd from (select max(datumd) as zadnjidatum from tabela1 where iduser='$user' group by koda) as x join tabela1 on x.zadnjidatum=tabela1.datumd group by koda


je mogoče v tvojemqueriju kak izraz, ki ga server ne razume, bi bilo to mogoče?

DeeJay ::

Izpiši mysql_error in boš vidu napako

sebavet ::

Sem izpisal:
if (!$result)
  {
  die(mysql_error());
  }


in ni napake.

sebavet ::

našel, končno, moja napaka pri zapiranju baze, hvala vseeno. @LordVeon, kako naj najdem kdaj (datumd) je bilo stanje kode (rabim seznam za vse kode pri določenem userju) zadnjič na "off".

moj query je:
select koda, datumd from tabela1 join (select max(datumd) as zadnjidatum from tabela1 where stanje= 'off' and user='$user' group by koda) as x on x.zadnjidatum=tabela1.datumd group by koda


se ti zdi pravilen zapis?
ne zmorem testirat pri več userjih, hvala.


Vredno ogleda ...

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

SQL vprašanje

Oddelek: Programiranje
81099 (698) MrStein
»

SQL syntax napaka

Oddelek: Programiranje
121561 (1052) MrStein
»

[SQL] Unikatni izpisi

Oddelek: Programiranje
212189 (1576) 111111111111
»

sql select stavek

Oddelek: Programiranje
121446 (1348) zavajon
»

MYSQL vprašanje

Oddelek: Programiranje
131763 (1378) MrBrdo

Več podobnih tem