Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Problem z utworzeniem odpowiedniego zapytania dla forum
Forum PHP.pl > Forum > Przedszkole
PiXel2.0
Powiedzmy, ze mam taka tabele z postami:

  1. +---------+---------+----------+
  2. | post_id | user_id | topic_id |
  3. +---------+---------+----------+
  4. | 1 | 2 | 1 |
  5. | 2 | 1 | 3 |
  6. | 3 | 3 | 1 |
  7. | 4 | 4 | 5 |
  8. | 5 | 2 | 5 |
  9. | 6 | 4 | 3 |
  10. | 7 | 1 | 4 |
  11. | 8 | 4 | 4 |
  12. | 9 | 2 | 1 |
  13. | 10 | 1 | 2 |
  14. +---------+---------+----------+


Chce skonstruowac zapytanie ktore pobierze takie wartosci topic_id gdzie w rekordach z najwiekszym post_id dla danego topic_id user_id bedzie mial wartosc X.

Czyli mowiac prosciej chodzi o uzyskanie identyfikatorow tematow w ktorych uzytkownik X odpowiadal jako ostatni.

Np dla user_id o wartosci 4 wynikiem miloby byc:

  1. +----------+
  2. | topic_id |
  3. +----------+
  4. | 3 |
  5. | 4 |
  6. +----------+


Pomimo iz uzytkownik o identyfikatorze 4 odpowiadal w tematach o identyfikatorach 5, 3 i 4 to 5 nie ma w wyniku bo w tym temacie jako ostatni odpowiadal uzytkownik o identyfikatorze 2 bo takie user_id widnieje przy najwiekszym post_id dla topic_id o wartosci 5.

Zastanawialem sie nad uzyciem do tego celu GROUP BY, IF(), IN(), ale nic mi nie przychodzi do glowy.
franki01
  1. SELECT `t1`.*, COUNT(`t2`.*) `counter` FROM `tabela` `t1`
  2. LEFT JOIN `tabela` `t2` ON `t2`.`post_id`>`t1`.`post_id` AND `t2`.`title_id`=`t1`.`title_id`
  3. WHERE `t1`.`user_id`='$id' AND `counter`=0
  4. GROUP BY `t1`.`topic_id` HAVING MAX(`t1`.`post_id`)


Nie wiem czy to zadziała, bo pisane z palca, ale warto od podobnego zapytania zacząć, bo jak dobrze zrozumiałem, to o takie coś chodzi.


EDIT:
Przy tym zapytaniu oczywiscie nie obedzie sie bez sprawdzania mysql_error() smile.gif
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.