![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
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
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ć |
|
|
![]() |
![]()
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 ![]() |
Widzę, że nawet nie sprawdziłeś czy zapytanie jakie Ci podałem działa! Dorwałem się do swojego kompa i założyłem 2 tabele:
FORUM id nazwa 1 Pierwsze 2 Drugie 3 Trzecie 4 Czwarte TOPIC id forum_id nazwa 1 1 Jeden 2 1 Dwa 3 1 Trzy 4 3 Cztery 5 3 Pięć 6 3 Sześć 7 4 Siedem 8 4 Osiem Zauważ, że forum o id = 2 nie ma topiców żadnych... Teraz zapytanie:
i w efekcie dostałem... forum nazwa_forum topic_id 1 Pierwsze 3 2 Drugie NULL 3 Trzecie 6 4 Czwarte 8 Czy było to tak trudno sprawdzić? Co lepsze... Minimalna zmiana i nawet LEFT JOIN wystarczył:
EDIT: Twoje selecty i join zostały skrócone do jednego LEFT JOIN i grupowania (IMG:style_emoticons/default/smile.gif) Wystarczy teraz jedynie sprawdzać, czy topic_id jest równe NULL. Jeśli tak to znaczy, że forum nie posiada tematów. EDIT2: Zerknąłem na stronę MySQL.... Tam przykład z LEFT JOIN jest nawet w przykładach (IMG:style_emoticons/default/sciana.gif) http://dev.mysql.com/doc/refman/5.1/en/exa...lumn-group.html Ten post edytował thek 12.12.2009, 20:36:38 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 21:42 |