Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] nie powtarzające się rekordy
harryk
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.04.2005

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


W bazie znajdują się następujące tabele (w uproszczeniu):

  1. komentarze ( id | galeria_id | artykul_id | zzz_id | autor | text | DATA )
  2. galeria ( id | nazwa )
  3. artykul ( id | nazwa | text )
  4. zzz ( id | nazwa )


Chce pobrać 10 najnowszych komentarzy (bez powtarzania tematow, wiec jesli ostatnie 4 komentarze wg. daty beda z jednego artykulu, to ma tego nie powtarzać).

Wiem jak sobie z tym poradzic, gdyby w komentarze bylo np. tylko artykul_id (a nie jeszcze galeria_id i zzz_id). Wtedy wystarczy DISTINCT, ale jesli są te 3 pola, to DISTINCT sobie nie radzi, albo ja nie potrafie tego napisac (z GROUP BY niby tez probowalem, ale skutek troche dziwny)?

Wiem, że tematów było o tym sporo, ale właśnie DISTINCT i GROUP BY było tam opisywane. Próbowałem z tym, nie udało się, więc pytam...

Ten post edytował harryk 20.01.2006, 20:51:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


  1. SELECT MAX(id) AS id
  2. FROM komentarze GROUP BY artykul_id


To zapytanie daje Ci id najwiekszych (najnowszych) komentarzy z danego artykulu
Go to the top of the page
+Quote Post
harryk
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.04.2005

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


A dodając do tego galeria_id i zzz_id jak to miałoby wyglądać? Tzn. ze dla nich mam zrobić 2 inne zapytania (a wiec łacznie 3)?
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Np tak:

  1. SELECT *
  2. FROM artykul, galeria, zzz, komentarze
  3. (
  4. SELECT MAX(id) AS id
  5. FROM komentarze GROUP BY artykul_id
  6. ) t
  7. WHERE t.id = komentarze.id AND artykul.id = komentarze.artykul_id AND komentarze.galeria_id = galeria.id AND komentarze.zzz_id = zzz.id


A jesli czegos nie ma to mozesz uzyc LEFT JOIN
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: 23.08.2025 - 18:25