kracak
14.09.2012, 22:47:50
Witam mam tabelę w stylu
"statusy"
id (auto_increment), opis, devid, data
oraz tabele "urządzeń"
id nazwa, opis, producent
devid to id urządzenia z drugiej tabeli
w tabeli statusy tworzą się po kolei wpisy dla kazdego urzadzenia np
1, ok, 1, 20120801
2, fail, 2, 20120801
3, fail, 1, 20120802
4, ok, 2, 20120802
itp i teraz pytanie jak wyciągnąć listę wszystkich ostatnich wpisów dla danego devid
czyli np żeby wynik wyrzucił tylko
3, fail, 1, 20120802
4, ok, 2, 20120802
prachwal
14.09.2012, 23:22:30
robisz podzapytane, tam szukasz max(id) dla danego opis
później join do orginalnego id i masz dane
kracak
15.09.2012, 08:50:14
Cytat(prachwal @ 15.09.2012, 00:22:30 )

robisz podzapytane, tam szukasz max(id) dla danego opis
później join do orginalnego id i masz dane
Właśnie ja to widzę tak że robię select o id , info, date, opis i jakiś drugi o max(id) dla każdego devid potem to mogę sobie ewentualnie połączyć z tabela urządzeń żeby jakieś tam bzdury wyswietlić ale to już mniej istotne i to raczej potrafię zrobić tylko nie wiem jak te dwa pierwsze selecty połączyć.
coś takiego wydziergałem
SELECT * FROM devbackup WHERE id= ANY (SELECT max(id) AS max_id FROM devbackup GROUP BY devid)
grzes999
16.09.2012, 13:39:11
Cytat(kracak @ 14.09.2012, 23:47:50 )

itp i teraz pytanie jak wyciągnąć listę wszystkich ostatnich wpisów dla danego devid
Powiedz mi jeszcze co rozumiesz pod pojęciem ostatnich wpisów ma być ostatni wpis czy dwa ostatnie czy ile.
kracak
17.09.2012, 16:14:41
Cytat(grzes999 @ 16.09.2012, 14:39:11 )

Powiedz mi jeszcze co rozumiesz pod pojęciem ostatnich wpisów ma być ostatni wpis czy dwa ostatnie czy ile.
Chodziło o jeden ostatni wpis ale dla każdego dev id. Ale zapytaniem które wkleiłem wyżej ładnie udało mi się to zrobić i rozwiązać.
markonix
17.09.2012, 16:29:15
A czy to nie wystarczy posortować od tyłu i LIMIT X ? ...
kracak
17.09.2012, 18:09:58
no tak to możesz znaleźć chyba ostatni wpis w tabeli ale jak jest np po 100 wpisów np dla każdego dev id i ok 100 urządzeń z różnymi id to jak to takim prostym sortowaniem załatwić?
Niktoś
17.09.2012, 18:20:36
Cytat
Właśnie ja to widzę tak że robię select o id , info, date, opis i jakiś drugi o max(id) dla każdego devid potem to mogę sobie ewentualnie połączyć z tabela urządzeń żeby jakieś tam bzdury wyswietlić ale to już mniej istotne i to raczej potrafię zrobić tylko nie wiem jak te dwa pierwsze selecty połączyć.
A czego nie użyjesz polecenia join i złączenia ON(tabela1.devid=tabela2.id) gdzie tabela1 i 2 to przykładowe aliasy.
markonix
17.09.2012, 18:20:42
Napisałeś w pierwszym poście "dla danego devid" więc jaki w tym problem aby dodać warunek WHERE `devid` i działać z ORDER BY & LIMIT?
kracak
17.09.2012, 18:35:27
Cytat(markonix @ 17.09.2012, 19:20:42 )

Napisałeś w pierwszym poście "dla danego devid" więc jaki w tym problem aby dodać warunek WHERE `devid` i działać z ORDER BY & LIMIT?
Fakt można było to zdanie dwuznacznie odczytać. Chodziło mi o listę która by zawierała ostatni wpis dla każdego z urządzeń. Poniżej przykład napisałem co powinno wybrać. No ale już sobie poradziłem więc temat można zamknąć no chyba że można ten mój Select jakoś zoptymalizować.