| 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 |
#2 · Zasláno: 9. 9. 2010, 21:49:01
Prvně mě napadlo
select id_objednavky from tabulka where id_stavu >= 7 group by id_objednavky having count(*) = 1 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 |
#3 · Zasláno: 9. 9. 2010, 21:57:23
Alphard: to asi nie je to, čo chcel…
|
||
| Alphard Profil |
#4 · Zasláno: 9. 9. 2010, 22:12:49
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 |
#5 · Zasláno: 9. 9. 2010, 22:30:32
Alphard: chce objednávky, pri ktorých má posledný záznam v tabuľke stav 7.
|
||
| Alphard Profil |
#6 · Zasláno: 9. 9. 2010, 22:53:49
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ý.
|
||
|
Časová prodleva: 6 dní
|
|||
| Kajman_ Profil * |
#7 · Zasláno: 15. 9. 2010, 16:49:54
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 |
||
|
Časová prodleva: 16 let
|
|||
0