Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]5 ostatnich rekordów (po jednym z tabeli)
--Obcy--
post
Post #1





Goście







Witam.
Ostatnio napisałem prosty system newsów, wszystko jest ok ale...
Mam pięć 'kategorii' newsów rozmieszczonych w tabelach odpowiadających kategorii.
Na podstronie danej kategorii wyświetlam 10 ostatnich...
Ale chciałbym na stronie głównej umieścić 5 ostatnich ogólnie, czyli ze wszystkich kategorii.

Myślałem, żeby zrobić po prostu:
ostatni z 1 kat.
ostatni z 2 kat.
ostatni z 3 kat.
ostatni z 4 kat.
ostatni z 5 kat.

Ale to odpada bo jest to dosyć 'sztywne' i w ogóle nie o to chodzi. Dodając 5 newsów do kat. 3 (do reszty nic) na głównej powinno wyświetlić się te 5 nowo dodanych.

PS. Pisząc posta wpadłem na pomysł (IMG:style_emoticons/default/smile.gif) (Forum pomaga samo z siebie bez interwencji użytkowników (IMG:style_emoticons/default/biggrin.gif) )
Można przecież wszystkie newsy upakować w jednej tabeli i stworzyć kolumnę 'kategoria'. Później przy pobieraniu tych 5-ciu darować sobie WHERE i jest 5 ostatnich (IMG:style_emoticons/default/smile.gif)
A przy pobieraniu rekordów dla danej kategorii zastosować:
  1. $kategoria = 'kategoria1';
  2.  
  3. (...)WHERE kategoria = '$kategoria' (...)


Czy dobrze kombinuję? ;> A może jakiś lepszy i wydajniejszy sposób znacie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
--Obcy--
post
Post #2





Goście







  1. SELECT
  2. n.id_newsa,
  3. n.tytul,
  4. CONCAT_WS(',', k.nazwa) AS kategorie
  5. FROM newsy n
  6. LEFT JOIN news_kategoria nk ON nk.id_newsa = n.id_newsa
  7. LEFT JOIN kategoria k ON k.id_kategoria = nk.id_kategoria
  8. ORDER BY n.data_dodania DESC
  9. LIMIT 2


Czyli: Wybieram id_newsa i tytul z tabeli 'newsy' dla których przypisana jest kolumna 'nazwa' z tabeli 'kategorie'.
Dla tabeli 'newsy' przypisuję alians(?) 'n', dla 'kategoria' alians 'k', a alians 'nk' to tabela 'news_kategoria'.

  1. LEFT JOIN news_kategoria nk ON nk.id_newsa = n.id_newsa

Tutaj przypisuję 'nk' dla 'news_kategoria', w której kolumna 'id_newsa' z tabeli 'nk' przyjmuje tą samą wartość co 'id_newsa' z tabeli 'news'.

  1. LEFT JOIN kategoria k ON k.id_kategoria = nk.id_kategoria

Tutaj podobnie jak wcześniej. 'id_kategoria' z tabeli 'kategorie' = 'id_newsa' z tabeli 'news_kategoria'.

Mogę się mylić bo to tylko moja analiza kodu.
Mam nadzieję, że dobrze to rozumiem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 09:10