Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL]wybieranie najnowszych
smagul
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 4
Dołączył: 17.02.2009

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


mam tabelkę z której muszę pobrać pięć najnowszych wpisów, po jednym dla każdego artykułu oraz bieżące wartości dla tych wierszy.
w tabelce mam id, name, date i value.

  1. SELECT name, value FROM TABLE WHERE name IN('name1', 'name2', 'name3', 'name4', 'name5') GROUP BY name ORDER BY date ASC


i otrzymuję po jednym wierszy każdego elementu ale ze złą wartością.
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Najpierw obie posortuj malejąco tablicę wpisów zanim zaczniesz grupować smile.gif Grupowanie bowiem występuje PRZED porządkowaniem. Przykład?
  1. SELECT * FROM (SELECT name, value FROM tabela WHERE name IN('name1', 'name2', 'name3', 'name4', 'name5') ORDER BY date DESC) AS t GROUP BY t.name
Ewentualnie wariacja tego.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Zajęczyca
post
Post #3





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 10.05.2010

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


To może żeby nie zakładać nowego tematu - równierz mam problem z pobieraniem ostatnio dodanych wpisów. Mój kod wygląda następująco:

  1. function main()
  2. {
  3. $db = connection(); //polaczenie z baza
  4. $lastph = ("SELECT MAX(Id) FROM usr"); //index o najwyzszej wartosci
  5. $execute = mysql_query($lastph, $db);
  6. $wynik = mysql_result($execute,0,0); //pobieramy wynik zapytania
  7. $id = $wynik['Id']; //zapisujemy do zmiennej (bo tak mi wygodnie)
  8. $i=20; //to ograniczenie ma sprawic ze zobaczymy tylko 20 ostatnio dodanych rekordow
  9. while($i>0)
  10. {
  11. $find = ("SELECT * FROM usr WHERE Id='$id'"); //pobieramy dane dla aktualnej wartosci indexu
  12. $exe = mysql_query($find, $db);
  13. $res = mysql_fetch_array($exe); //tablica z danymi
  14. $login = $res['login']; // pobieramy jakies informacje
  15. if ($res['login']!='') //jesli niektore wartosci w tym rekordzie sa puste to go pomijamy
  16. { //nie sa puste to wyswietlamy jakies informacje
  17. echo'sialala '.$index.'';
  18. }
  19. $id--; //zmniejszamy wartosc indexu
  20. $i--; //zmniejszamy i
  21. }


Problem jest następujący:
Gdy posiadam wpisy o indexach 1-9 to pętla działa jak marzenie. Problem zaczyna się od 10 rekordu wzwyż: gdy mam wpisy o indexach 10-19, wyświetla się tylko jeden, ten spod indexu 1, analogicznie sytuacja ma się dla indexów 20-29 (wyświetla się tylko rekord spod indexu 2) itd.

Nie mam zielonego pojęcia dlaczego tak jest. Index w bazie ma atrybuty AUTO_INCREMENT PRIMARY_KEY NOT NULL INT(10).
Szukam jakiegoś rozwiązania od dłuższego czasu, niestety na nic nie wpadłam, z czego wnioskuję, że rozwiązanie jest na tyle proste, że nie ma sensu nawet o tym gdziekolwiek pisać;-)
HELP!;-)



Edit: Ok już nie trzeba, zapytanie było źle sformułowane, już wsio działa ;-)

Ten post edytował Zajęczyca 11.05.2010, 06:52:57
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: 19.08.2025 - 18:36