Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JOIN - sortowanie(?) odwrotnie..
Forum PHP.pl > Forum > Bazy danych > MySQL
qlash
Witam

Mam taki problem z JOIN'em w mysql: tabela i rekord który wybieram w warunku do join w klauzie ON ma tak jakby kilka zwracanych rekordów, baza zawsze zwraca mi tak jakby "pierwszy z brzegu", czy mogę to jakoś zmienic? probowalem juz order by, limity itp nic nie działa sad.gif Czy istnieje jakas metoda na to?
osiris
Podaj strukture tabel i przykladowe zapytanie, bo chyba nie do konca Cie rozumiem.
qlash
Tabele:

posty
id dodany temat_id autor tresc ip akcept

temat
id temat artykul typ

aktualne zapytanie:

  1. SELECT t.temat, t.id AS nr_tematu, count(p.id) AS postow, DATE_FORMAT(p.dodany,"%d.%m.%y %k:%i") AS dodano
  2. FROM temat t
  3. LEFT JOIN post p ON t.id = p.temat_id
  4. WHERE t.artykul = '.$proj['id'].' AND p.akcept = 1 AND typ = 1
  5. GROUP BY t.id
  6. ORDER BY p.dodany DESC


i teraz wyswietla mi sie lista tematow z wybranego artykulu z liczba postow dla kazdego z nich oraz data pierwszego postu, a potrzebuje z data ostatniego postu w kazdym temacie...

Jest to takie mini-forum do artykulow, pozdrawiam.
osiris
sprobuj:
  1. SELECT t.temat, t.id AS nr_tematu, DATE_FORMAT(p.dodany,"%d.%m.%y %k:%i") AS dodano, count(p.id) AS postow,
  2. FROM temat t, post p
  3. WHERE t.artykul = '.$proj['id'].' AND p.akcept = 1 AND typ = 1 AND t.id = p.temat_id
  4. GROUP BY p.temat_id
  5. HAVING p.dodany = MAX(p.dodany)
qlash
Niestety to zapytanie w takiej formie powoduje blad:

Unknown column 'p.dodany' in 'having clause'

Po dodaniu tej kolumny do select'a zapytanie sie wykonuje ale nie zwraca zadnych rekordow...
osiris
No to moze tak:
  1. SELECT t.temat, t.id AS nr_tematu, DATE_FORMAT(p.dodany,"%d.%m.%y %k:%i") AS dodano, p.postow
  2. FROM temat AS t
  3. LEFT JOIN ( SELECT temat_id, MAX(dodany) AS dodany, COUNT(id) AS postow
  4. FROM post WHERE akcept = 1
  5. GROUP BY temat_id
  6. ) AS p ON p.temat_id = t.id
  7. WHERE t.artykul = '.$proj['id'].' AND typ = 1

tylko nie wiem czy czy pole typ nalezy do tabeli temat czy do post, jesli do post, to warunek typ = 1 trzeba przeniesc do podzapytania
qlash
Dzięki, po lekkiej przeróbce wreszcie się udało.
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.