Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] where i funkcja max
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


  1. SELECT f. * , t.name AS lt_name, t.id AS lt_id
  2. FROM `laczekbb_forums` f
  3. LEFT JOIN `laczekbb_topics` t ON f.id = t.forum
  4. WHERE t.id = max( t.id )
  5. GROUP BY f.id ASC
  6. ORDER BY f.cat ASC , f.id ASC


omówienie zapytania:
zapytanie ma za zadanie pobierać fora oraz ostatni temat w danym forum
tabela `laczekbb_forums` to poprostu fora/kategorie forum
tabela `laczekbb_topics` to tematy które są uporządkowane w tych kategoriach
t.forum - to id forum w jakim znajduje się temat

problem polega na tym że po dodaniu
  1. WHERE t.id = max( t.id )

zapytanie nie działa,

w jaki sposob mogę osiągnąć to że do tych for "doklejany" jest temat o najwyższym id w danej kategorii ?

czyli jeśli mam 3 tematy w konkretnym forum, i mają kolejo id 1,43,678 to żeby mi wybrało ten z id 678. Dodam że dodanie Order by t.id DESC nie pomoga


PS. no właściwie to wolałbym po dacie a nie po id, ale to już sobie poradzę żeby to przerobić
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A czemu nikt nie pomyślał o właściwym order by? (IMG:style_emoticons/default/winksmiley.jpg) Skoro łączymy fora i tematy to tam już musimy przesłać tematy uporządkowane od najwyższego i dopiero grupować po id_forum. To sprawi, że dostaniemy tę strukturę o jaką chodzi... W najprostszej postaci jaką opisałem (niekoniecznie optymalnej) to byłoby:
  1. SELECT * FROM (SELECT f.id AS forum, t.id AS topic FROM forums f LEFT JOIN topics t ON f.id = t.forum ORDER BY f.id ASC, t.id DESC) GROUP BY forum
Czy coś w tym stylu (IMG:style_emoticons/default/smile.gif) Piszę z palca bo nie mam serwera MysQL na kompie dziewczyny zainstalowanego. Jedyny byk jaki może wyniknąć to taki, że całe to za FROM podzapytanie zwróci error, iż brak mu aliasu (IMG:style_emoticons/default/smile.gif) Wtedy tylko minimalna zmiana i powinno hulać.

EDIT: Ja wyciągnąłem jedynie id forum i id tematu najwyższego. Ty możesz dopisać więcej kolumn.

Ten post edytował thek 12.12.2009, 11:10:02
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 22:44