Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] where i funkcja max
peter13135
post 11.12.2009, 17:06:37
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


  1. SELECT f. * , t.name AS lt_name, t.id AS lt_id
  2. FROM `laczekbb_forums` f
  3. LEFT JOIN `laczekbb_topics` t ON f.id = t.forum
  4. WHERE t.id = max( t.id )
  5. GROUP BY f.id ASC
  6. ORDER BY f.cat ASC , f.id ASC


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
  1. WHERE t.id = max( t.id )

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ć


--------------------
:)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
peter13135
post 12.12.2009, 10:34:30
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


bolverk - przykro mi ale cię kompletnie nie rozumiem

thomson89 niewiem czy masz racje bo tak średnio cię rozumiem, masz na myśli żeby pobrać najpierw to maxymalne id i potem je wstawić do zapytania questionmark.gif jeśli tak, to proszę pokaż mi jak to zrobić. Problem polega na tym że do każdy temat jest w jakimś konkretnym forum, dla każdego forum temat o maxymalnym id jest inny. dla przykładu dla forum 1 są tematy o id 1,3,8, a dla forum 2 są tematy o id 2,4,5, dla dla forum 3 są tematy o id 6,7,9
więc :
forum - ostatni id temat
1 - 8
2 - 5
3 - 9


chyba nie możliwe jest wyciągnięcie tego id wcześniej i wstawienie do zapytania, chyba że macie coś na myśli czego ja nie rozumiem

EDIT://

SELECT f. * , t.name AS lt_name, t.id AS lt_id
FROM `laczekbb_forums` f
LEFT JOIN `laczekbb_topics` t ON f.id = t.forum
WHERE t.id = (
SELECT max( id )
FROM `laczekbb_topics`
WHERE forum = f.id )
GROUP BY f.id ASC

zrobiłem tak, i jakoś działa, troche wolniej, więc nie wiem jak to będzie działało przy większej liczy rekordów, ale póki co to najlepsze rozwiązaenie jakie znam

Ten post edytował peter13135 12.12.2009, 10:43:48


--------------------
:)
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 18:40