Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] Podzapytanie
-chang-
post
Post #1





Goście







Witajcie, probuje stworzyc zapytanie ktore posortuje mi tematy wg czasu ostatniego dodanego postu korzystajac z 2 tabel. Nie jestem biegly w takich kombinacjach i na chwile obecna stworzylem szkielet takiego zapytania.

SELECT * FROM `tematy` ORDER BY (SELECT `czas` FROM `posty` WHERE `id_tematu` = xxx ORDER BY `czas` DESC)

W podzapytaniu brakuje przynajmniej id aktualnego tematu by wiedzial jakie posty wybrac.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Zdenormalizuj baze i zapisz czas dodania nowego postu w topiku == prostsza SQLka i szybsza przy duzym forum

Ten post edytował dr_bonzo 23.05.2008, 15:49:35
Go to the top of the page
+Quote Post
no_face
post
Post #3





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Wg mnie nalezy unikac przechowywania redundantnych danych, a zapytanie troche zmodyfikowac.

  1. SELECT `id` AS idd FROM `tematy` ORDER BY (SELECT `czas` FROM `posty` WHERE `id_tematu` = idd ORDER BY `czas` DESC LIMIT 1 ) DESC


Owe zapytanie posortuje Ci tematy wg daty ostatniego posta, im nowszy post w danym temacie tym temat wyzej. W tym przypadku zapytanie wybierze tylko id, ale wystarczy po pierwszym slowie SELECT dodac reszte interesujacych nas nazw kolumn.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


no_face, unikac dopoki ich duplikacja sprawi ze aplikacja zacznie dizalac szybko, a nie zamulac sie przy byle joinie, przy 1000cach userow (patrz twitter, flickr.)
Go to the top of the page
+Quote Post
no_face
post
Post #5





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


W takiej sytuacji trzeba byloby zastosowac dodatkowe zapytanie aktualizujace wpis w tabeli topic z kazdym dodaniem nowego postu, co jednak wydaje sie i tak wydajniejsza metoda, niz JOIN'owac liste tematow.
Go to the top of the page
+Quote Post

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: 16.09.2025 - 04:40