Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL grupowanie
Forum PHP.pl > Forum > PHP
esiek
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
Berg
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
esiek
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,
Berg
  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.
esiek
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']
Berg
  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
esiek
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
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.