Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> lista w mysql, cd
kicaj
post
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Tabela: posts
post_id int auto_i...
post_title var..
post_content text...
post_user_id int...
post_parent_id

Wybrac najnowsze posty, wyswietlajac `post_title` rodzica (`post_parent_id`)

Udalo mi sie to wykonac, ale jesli byl post bez odpowiedzi to sie sypalo...
JTZ?

Ten post edytował kicaj_ 12.02.2005, 01:25:36
Go to the top of the page
+Quote Post
popbart
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


  1. SELECT t1.post_title AS title_rodzic,t2.post_title AS title_dziecko
  2. FROM posts AS t1 RIGHT JOIN posts AS t2 ON(t2.post_parent_id=t1.post_id)

Wyjaśnienie- rodzic to dziecko bez rodzica (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jeżeli chcesz odwrotnie to:
  1. SELECT IF(t1.post_title IS NULL,t2.post_title,t1.post_title) AS title_rodzic,
  2. IF(t1.post_title IS NULL,NULL,t2.post_title) AS title_dziecko
  3. FROM posts AS t1 RIGHT JOIN posts AS t2 ON(t2.post_parent_id=t1.post_id)
Go to the top of the page
+Quote Post
kicaj
post
Post #3





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Zadne nie pomoglo, nawet po moich przerobkach (tymbardziej:P)

Podaje zrzut tabeli:
  1. CREATE TABLE `posts` (
  2. `post_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `post_title` varchar(255) NOT NULL DEFAULT '',
  4. `post_content` text NOT NULL,
  5. `post_add` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  6. `post_forum_id` int(11) NOT NULL DEFAULT '0',
  7. `post_user_id` int(11) NOT NULL DEFAULT '0',
  8. `post_parent_id` int(11) NOT NULL DEFAULT '0',
  9. PRIMARY KEY (`post_id`),
  10. UNIQUE KEY `post_id` (`post_id`)
  11. ) TYPE=MyISAM;
  12.  
  13. INSERT
  14. INTO `posts` VALUES (1, 'ABC', 'tresc abc', '2005-02-11 00:00:00', 5, 1, 0);
  15. INSERT
  16. INTO `posts` VALUES (2, 'DEF', 'tresc def', '2005-02-08 00:00:00', 5, 2, 0);
  17. INSERT
  18. INTO `posts` VALUES (3, 'GHU', 'tresc ghi', '2005-02-09 00:00:00', 5, 3, 0);
  19. INSERT
  20. INTO `posts` VALUES (4, '', 'odp1 do abc', '2005-02-12 01:07:31', 5, 4, 1);
  21. INSERT
  22. INTO `posts` VALUES (5, '', 'odp1 do def', '2005-02-12 01:08:22', 5, 5, 2);
  23. INSERT
  24. INTO `posts` VALUES (6, '', 'odp2 do abc', '2005-02-12 01:08:55', 5, 6, 1);

Temat ABC ma 3 posty (2 odpowiedzi),
DEF - 2 (1 odpowiedz)
GHI - 1 (brak odpowiedzi)

Wyswietlic, posty wg najnowszej daty, wyswietlajac ostatnia date, ilosc postow i post_user_id ostatniej odpowiedzi
Koniecznie w jednym zapytaniu!

UPDATE:
Ulozylem cos takiego, dziala poprawnie:
  1. SELECT p1.post_title, MAX( p1.post_add ) AS newest, IF ( p1.post_parent_id =0, p1.post_id, p1.post_parent_id ) AS parents, COUNT( p1.post_id ) AS posts
  2. FROM posts p1
  3. GROUP BY parents
  4. ORDER BY newest DESC

Wyswietla temat, najnowsza date, id rodzica i liczbe postow, ale nie wiem jak wyciagnac id usera w najnowszych postach

Ten post edytował kicaj_ 13.02.2005, 00:57:19
Go to the top of the page
+Quote Post
popbart
post
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


Może tak ci pomogę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. SELECT substring_index(group_concat( post_user_id separator '|' ),'|',-1) AS last_user

Pozrawiam,
Batek P.
Go to the top of the page
+Quote Post
kicaj
post
Post #5





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Cytat(popbart @ 2005-02-13 14:01:24)
Może tak ci pomogę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. SELECT substring_index(group_concat( post_user_id separator '|' ),'|',-1) AS last_user

Pozrawiam,
Batek P.

To jest dla >= MySQL 4.1.x
Go to the top of the page
+Quote Post
popbart
post
Post #6





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


No to sprawa jest bardziej skomplikowana (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Potrzebujesz jednocześnie count z grupowania i id ostatniego usera, więc sztuczka z poprzedniego tematu nie wchodzi w grę.
Jeżeli jest to możliwe, to dodaj do tabeli pole last_user_id i w aplikacji po każdym insercie wykonaj update z aktualnym user_id.
Z takiego rozwiązania często się korzysta(np. ilość postów na forum), gdyż jest to szybkie.

Pzdr.
Go to the top of the page
+Quote Post
kicaj
post
Post #7





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Cytat(popbart @ 2005-02-15 23:57:28)
...Jeżeli jest to możliwe, to dodaj do tabeli pole last_user_id i w aplikacji po każdym insercie wykonaj update z aktualnym user_id...

A jesli ostatni post bedzie usuwany, to bedzie trzeba wyciagac ostatni, i upadate

Narazie nie skorzystam, zrobilem to dwoma zapytaniami... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
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: 22.08.2025 - 13:32