Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie najnowszego wpisu z drugiej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
potreb
Witam
  1. $sql = "SELECT f.*, t.* FROM forums f LEFT JOIN forum_topics t on t.topics_fid = f.forums_id
  2. ORDER BY f.forums_position, t.topics_date ASC";


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 smile.gif Napiszcie czy zrobiłem to w miarę normalnie czy raczej okrężnie??
Mchl
Ś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
gothye
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  winksmiley.jpg dzieki temu przyśpieszasz pracę z SQL 
potreb
Cytat(gothye @ 3.03.2010, 23:06:56 ) *
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 winksmiley.jpg dzieki temu przyśpieszasz pracę z SQL


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 :/
Mchl
Denormalizacja czasami jest przydatna, owszem. Tylko żeby nie przesadzić z nią smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.