Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Problem z utworzeniem odpowiedniego zapytania dla forum
PiXel2.0
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 13
Dołączył: 16.03.2007
Skąd: Łódź

Ostrzeżenie: (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.

Ten post edytował PiXel2.0 3.05.2008, 14:41:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
franki01
post
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


  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() (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował franki01 3.05.2008, 15:03:36
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 - 12:49