Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> JOIN - sortowanie(?) odwrotnie..
qlash
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 29.08.2006

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


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?
Go to the top of the page
+Quote Post
osiris
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


Podaj strukture tabel i przykladowe zapytanie, bo chyba nie do konca Cie rozumiem.
Go to the top of the page
+Quote Post
qlash
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 29.08.2006

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


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.
Go to the top of the page
+Quote Post
osiris
post
Post #4





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


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)
Go to the top of the page
+Quote Post
qlash
post
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 29.08.2006

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


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...
Go to the top of the page
+Quote Post
osiris
post
Post #6





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


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

Ten post edytował osiris 22.08.2007, 09:34:30
Go to the top of the page
+Quote Post
qlash
post
Post #7





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 29.08.2006

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


Dzięki, po lekkiej przeróbce wreszcie się udało.
Go to the top of the page
+Quote Post

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: 19.08.2025 - 04:12