Autor Zpráva
retty
Profil *
Ahojte viete mi poradit ako by mal vyzerat dotaz na DB? uz si stym neviem poradit.

Tabulka vyzera nasledovne:
ID_ZAZNAMU        ID_OBJEDNAVKY       ID_STAVU         DATUM_ZMENY
1                    1                   3            9.9.2010 10:12
2                    2                   3            9.9.2010 10:17
3                    1                   7            9.9.2010 10:22
4                    3                   3            9.9.2010 10:42
5                    1                   9            9.9.2010 10:43
6                    3                   7            9.9.2010 10:44
7                    2                   7            9.9.2010 10:58
…

a takto to ide dalej.

potrebujem vypisat vsetky objednavky (ID_OBJEDNAVKY) ktore maju stav (ID_STAVU) stav 7. ALE TENTO STAV MUSI BYT AKTUALNY. Teda v pripade ze na danej objednavke uz bol neskor aj iny stav tak take uz sa nevypisu. Napr. V rpiklade sa vypise len 3 a 2. Objednavka 1 sa uz nevypise lebo po id 7 uz mala aj iny stav (9)

Poprosim vas poradte mi dake riesenie. uz si neviem rady.
Alphard
Profil
Prvně mě napadlo
select id_objednavky from tabulka where id_stavu >= 7 group by id_objednavky having count(*) = 1
to ale selže, pokud záznam se stavem 7 neexistuje a je tam hned třeba stav 9.
Takže další verze je řešení s poddotazem
select id_objednavky from (
  select id_objednavky, max(id_stavu) id_stavu from tabulka group by id_objednavky
) t where id_stavu = 7
tiso
Profil
Alphard: to asi nie je to, čo chcel…
Alphard
Profil
tiso:
to asi nie je to, čo chcel…
Tak to teda nevím, co chce. Můžeš být konkrétnější, nebo ukázat jiný návrh řešení?
Moje dotazy vrátí id_objednávky 2 a 3. Přestně podle zadání, jak jsem ho pochopil.
tiso
Profil
Alphard: chce objednávky, pri ktorých má posledný záznam v tabuľke stav 7.
Alphard
Profil
Aha, vycházím z toho, že se id_stavu může pouze zvyšovat. Mazat to už nebudu, počkám na vyjádření rettyo, třeba je můj předpoklad správný.
Kajman_
Profil *
select t1.id_objednavky
from tabulka t1
join (select id_objednavky, max(datum_zmeny) datum_zmeny from tabulka group by id_objednavky) t2
  on t1.id_objednavky=t2.id_objednavky and t1.datum_zmeny=t2.datum_zmeny
where id_stavu = 7

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0