![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam
Listuje nazwy forum i przy okazji chcę dodać info z tabeli forum_topics o najnowszym wpisie, wszystko było by okey, gdyby nie fakt, że listuje mi wszystkie najnowsze tematy, jak ustawić jakiś limit albo jak skonstruować zapytanie aby z tabeli forum_topics pobrać najnowszy temat dla danego forum?? Okey, pomyślałem, jednak nie wiem czy to moje myślenie jest dobre. Kod SELECT f.*, t.* FROM forums f LEFT JOIN forum_topics t on t.topics_fid = f.forums_id WHERE t.topics_date = (SELECT max( `topics_date` ) FROM forum_topics WHERE topics_fid = f.forums_id) OR t.topics_date IS NULL ORDER BY f.forums_position, t.topics_date DESC Pobiera nazwy forów razem z najnowszym topiciem wg topics_date oraz te dla których nie ma nic przypisanego ![]() -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Średnio. Działać, działa, ale podzapytania w klauzuli WHERE, to coś z czym optymalizator MySQL nie radzi sobie najlepiej. Musisz więc odwalić robotę za niego jakoś tak.
Kod SELECT
f.*, t.* FROM forums AS f LEFT JOIN forum_topics AS t ON t.topics_fid = f.forums_id INNER JOIN ( SELECT topics_fid, MAX(topics_date) AS topics_date FROM forum_topics GROUP BY topics_fid ) AS td ON td.topics_fid = t.topics_fid AND td.topics_date = t.topics_date ORDER BY f.forums_position, t.topics_date DESC Ten post edytował Mchl 3.03.2010, 22:58:09 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
pisząć forum ,najlepiej w tabeli forum dać tabele last_post_id ,gdzie dodając post w postaci rekordu do SQL robisz jednocześnie UPDATE pola last_post_id
![]() -------------------- Nie udzielam pomocy poprzez PW
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
pisząć forum ,najlepiej w tabeli forum dać tabele last_post_id ,gdzie dodając post w postaci rekordu do SQL robisz jednocześnie UPDATE pola last_post_id ![]() Na początku tak miałem, ale stwierdziłem, że po co to skoro można pobrać informacje z drugiej tabeli. Nie wiedziałem zresztą że to aż taki problem :/ Ten post edytował potreb 3.03.2010, 23:29:45 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Denormalizacja czasami jest przydatna, owszem. Tylko żeby nie przesadzić z nią
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 04:37 |