Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MySQL grupowanie
esiek
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 6.11.2008
Skąd: Warszawa

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


Mam takie zapytanie

  1. SELECT * FROM (SELECT * FROM forum_post ORDER BY id_post DESC) GROPU BY id



i PhpMyAdmin wywala mi taki błąd


  1. MySQL zwrócił komunikat: Dokumentacja
  2. #1064 - Something is wrong in your syntax obok 'SELECT * FROM forum_post ORDER BY id_post DESC) GROPU BY id LIMI' w linii 1


i szczerze nie wiem gdzie tu jest błąd . . bede wdzieczny jesli ktos mi pomoze... pozdrawiam


--------------------
allebhp.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Berg
post
Post #2





Grupa: Zarejestrowani
Postów: 180
Pomógł: 37
Dołączył: 1.05.2008
Skąd: Białystok

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


Może te kolejne SELECT zamknięte w FROM i zła kolejność w zapytaniu? winksmiley.jpg

  1. SELECT * FROM `forum_post` GROPU BY `id` ORDER BY `id_post` DESC
Go to the top of the page
+Quote Post
esiek
post
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 6.11.2008
Skąd: Warszawa

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


to co podales dziala ale nie daje zamierzonego efektu. . . bo grupuje wg ID tak jak chce ale lapie pierwszy lepszy rekord z tej grupy a ja chce najnowszy czyli wysortowany DESC najwyzszy,


--------------------
allebhp.pl
Go to the top of the page
+Quote Post
Berg
post
Post #4





Grupa: Zarejestrowani
Postów: 180
Pomógł: 37
Dołączył: 1.05.2008
Skąd: Białystok

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


  1. SELECT *, max(`id_post`) as `maksimum` FROM `forum_post` GROPU BY `id`

Oprócz wszystkich pól z bazy dostaniesz dodatkowe `maksimum` gdzie będziesz miał najwyższy numer `id_post` dla grupy.
Go to the top of the page
+Quote Post
esiek
post
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 6.11.2008
Skąd: Warszawa

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


prawie winksmiley.jpg wyciąga najwyzszy rekord do grupy ale sortuje jakos losowo, jak ustawie na koncu order by id_post DESC wracam do punktu wyjscia

przykładowo
mam tak w tabeli

Kod
temat1, 22:31, autor, blablabla
temat2, 22:29, autor, blablabla
temat3, 22:28, autor, blablabla
temat2, 22:25, autor, blablabla
temat3, 22:24, autor, blablabla
temat3, 22:23, autor, blablabla
temat1, 22:22, autor, blablabla
temat1, 22:21, autor, blablabla



a chce mieć

Kod
temat1, 22:31, autor, blablabla
temat1, 22:22, autor, blablabla
temat1, 22:21, autor, blablabla

temat2, 22:29, autor, blablabla
temat2, 22:25, autor, blablabla


temat3, 22:28, autor, blablabla
temat3, 22:24, autor, blablabla
temat3, 22:23, autor, blablabla


i o pierwszy najwyższy rekord mi chodzi w grupie i grupy sortowac malejąco wg id_post


Aaa .. . .zrobilem tak
  1. $zapytanie = "SELECT *, max(`id_post`) as `maxik` FROM `forum_post` GROUP BY `id` ORDER BY `maxik` DESC";


i śmiga winksmiley.jpg o to mi właśnie chodziło smile.gif dzieki bardzo biggrin.gif nocka nie przespana ale zadanie wykonane winksmiley.jpg

ALE to nei wszystko. . .
polecenie wygląda tak

  1. $zapytanie = "SELECT *,max(`id_post`) as `maxik` FROM `forum_post` GROUP BY `id` ORDER BY `maxik` DESC LIMIT $pa,$tematow";
  2. $wykonaj = mysql_query("$zapytanie");
  3. while($wiersz = mysql_fetch_array($wykonaj))
  4. {
  5. $data_dodania = $wiersz['data'];
  6. $godzina_dodania = $wiersz['godzina'];
  7. }



echowanie zmiennych $godzina_dodania $data_dodania pokazuje mi najnizsza date i godzine najstarszego postu a potrzebuje najnowszego :/ da sie to jakos pobrac w tym zapytaniu czy lepiej wewnątrz tego zapytania zacząć nowe typu SELECT * FROM forum_post WHERE id_post=$wiersz['id_post']


--------------------
allebhp.pl
Go to the top of the page
+Quote Post
Berg
post
Post #6





Grupa: Zarejestrowani
Postów: 180
Pomógł: 37
Dołączył: 1.05.2008
Skąd: Białystok

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


  1. SELECT * FROM `forum_post` INNER JOIN (SELECT MAX(`id_post`) AS `maxidpost` FROM `forum_post` GROUP BY `id` ) AS `mx` ON `id_post` = `mx`.`maxidpost` ORDER BY `id_post` DESC
Go to the top of the page
+Quote Post
esiek
post
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 6.11.2008
Skąd: Warszawa

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


szczerze nie sprawdzalem ale zrobilem tak

  1. ......
  2. $zapytanie = "SELECT *,max(`id_post`) as `maxik` FROM `forum_post` GROUP BY `id` ORDER BY `maxik` DESC LIMIT $pa,$tematow";
  3. $wykonaj = mysql_query("$zapytanie");
  4. while($wiersz = mysql_fetch_array($wykonaj))
  5. {
  6.  
  7. $zapytaniea = "SELECT * FROM `forum_post` WHERE `id_post`='".$wiersz['maxik']."' LIMIT 1";
  8. $wykonaja = mysql_query("$zapytaniea");
  9. while($wiersza = mysql_fetch_array($wykonaja))
  10. {
  11. $data_dodania = $wiersza['data'];
  12. $godzina_dodania = $wiersza['godzina'];
  13. }
  14. ......



i mam zamierzony efekt winksmiley.jpg

Ten post edytował esiek 25.09.2009, 14:03:31


--------------------
allebhp.pl
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: 20.08.2025 - 18:04