ďťż
 
[MySQL] Zapytanie i problem z group by ďťż
 
[MySQL] Zapytanie i problem z group by
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL] Zapytanie i problem z group by



Sarenka - 10-09-2006 00:14
[MySQL] Zapytanie i problem z group by
  Mam zapytanie, ktore z bazy danych wyciaga wyniki ostatnich pomiarow
dostarczonych przez stacje pomiarowa - uzywa releacji do dwoch tabel:

SELECT `punkty pomiarowe`.ID as pID, `punkty pomiarowe`.nazwa as pnazwa,
`punkty pomiarowe`.opis as popis, `pomiary statystyczne`.LAFmin,
`pomiary statystyczne`.LAeq, `pomiary statystyczne`.LAFMax, `pomiary
statystyczne`.czas as pomczas, `rodzaj_terenu`.NazwaGrupy_pl as Teren,
`rodzaj_terenu`.WartProgowa as wp FROM `pomiary statystyczne` INNER JOIN
`punkty pomiarowe` ON `punkty pomiarowe`.ID = `pomiary
statystyczne`.`punkt pomiarowy` INNER JOIN `rodzaj_terenu` ON `punkty
pomiarowe`.IDRodzaju = `rodzaj_terenu`.IDRodzaju WHERE `punkty
pomiarowe`.miasto = 7 GROUP BY pnazwa ORDER BY LAFMax desc

Wynik z tego taki, ze mam trzy wiersze - po jednym dla kazdego z punktow
pomiarowych.
Jak zrobic, by bylo to po jednym wierszu dla ostatniego pomiaru? W tej
chwili wywala mi daty te, ktore CHYBA byly dodawane jako pierwsze do
bazy (nie wiem tego niestety na pewno -czesc danych testowych dostalem
juz w bazie i daty te sa jednymi z "zastanych" i nie bardzo chce na nowo
generowac 10tys rekordow)
Same pomiary trzymane sa w tabeli pomiary statystyczne - reszta to opis
punktu pomiarowego
Mam nadzieje, ze ktos z Was cos z tego zrozumie i bedzie w stanie pomoc...
Aha - baza MySQL 4 a czas podawany jako DATETIME. Data ostatniego
pomiaru moze sie bardzo roznic - nwet w latach (np. stacje wylaczone ze
zbierania pomiarow ale ktorych dane nadal maja sie wyswietlac itp.)

PS. Zanim ktos zacznie krzyczec nt. nazewnictwa tabel itp - to nie moja
baza - ja mam tylko interfejs www zrobic.

--
Sarenka (ale facet)
I tak i nie
wiem czego chce :)





sd - 10-09-2006 00:14

  Sarenka napisał(a):

> Wynik z tego taki, ze mam trzy wiersze - po jednym dla kazdego z punktow
> pomiarowych.
> Jak zrobic, by bylo to po jednym wierszu dla ostatniego pomiaru? W tej
> chwili wywala mi daty te, ktore CHYBA byly dodawane jako pierwsze do
> bazy (nie wiem tego niestety na pewno -czesc danych testowych dostalem

chyba masz taki sam problem jak ja (patrz 3 posty wyzej)
mam nadzieje ze ty to lepiej wytlumaczylas i ktos udzieli odpowiedzi:)

pozdrawiam




sd - 10-09-2006 00:15

  hejka

jesli jeszcze nie znalazlas odpowiedzi to ci podpowiem, bo ja znalazlem
napisalem zapytanie na podstawie mojej bazy

SELECT *
FROM zesp_news AS z
WHERE
(SELECT max(news_id)
FROM zesp_news AS n
WHERE n.zesp_id = z.zesp_id)
GROUP BY z.zesp_id
ORDER BY z.data_dodania




sd - 10-09-2006 00:15

  sd napisał(a):
> SELECT *
> FROM zesp_news AS z
> WHERE
> (SELECT max(news_id)
> FROM zesp_news AS n
> WHERE n.zesp_id = z.zesp_id)
> GROUP BY z.zesp_id
> ORDER BY z.data_dodania

hmmm, chyba jednak zle to napisalme:(
to czekamy nadal na propozycje :)
ale cos z tym MAX bedzie





sd - 10-09-2006 00:15

  witam

juz wiem o co chodzi
w jednym podzapytaniu pobierasz ID tego ostatniego pomiaru
w glownym zapytaniu robisz warunek
WHERE id IN (tutaj to podzapytanie)




Sarenka - 10-09-2006 00:15

  sd napisał(a):
> witam
>
> juz wiem o co chodzi
> w jednym podzapytaniu pobierasz ID tego ostatniego pomiaru
> w glownym zapytaniu robisz warunek
> WHERE id IN (tutaj to podzapytanie)
>
Udalo mi sie to zrobic tak:
SELECT `punkty pomiarowe`.ID AS pID, `punkty pomiarowe`.nazwa AS pnazwa,
`punkty pomiarowe`.opis AS popis, psa.LAFmin, psa.LAeq, psa.LAFMax,
psa.czas AS pomczas, `rodzaj_terenu`.NazwaGrupy_pl AS Teren,
`rodzaj_terenu`.WartProgowa AS wp
FROM `pomiary statystyczne` AS psa
INNER JOIN `punkty pomiarowe` ON `punkty pomiarowe`.ID = psa.`punkt
pomiarowy`
INNER JOIN `rodzaj_terenu` ON `punkty pomiarowe`.IDRodzaju =
`rodzaj_terenu`.IDRodzaju
WHERE `punkty pomiarowe`.miasto = 7 AND psa.czas
IN (

SELECT MAX( psb.czas )
FROM `pomiary statystyczne` AS psb
WHERE psb.`punkt pomiarowy` = psa.`punkt pomiarowy`
)
ORDER BY pnazwa

Ino rozwiazanie nei do przyjecia, bo ise 58sek wykonuje na Bartonie 2.8 :/

--
Sarenka (ale facet)
I tak i nie
wiem czego chce :)




sarenka@kastor.ds.pg.gda.pl - 10-09-2006 00:15

  <<<ciach>>>

Na Gentto na tym samym sprzecie 36 - 38sek :/
Tak samo dlugo trwa dla zapytania, ktore zwraca Empty set i jakies tam
wyniki.
Domyslam sie, ze chodzi o to, iz najpierw wyciaga sie wszystko z tabeli
a potem na tym dziala, wiec mam pytanie - jak to przyspieszyc?

--
Sarenka (ale facet)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • wawa19wwa91.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com