Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Rekordy "Mniejsze niż X liczba", Blokada wyświetlania rekordów mniejszych niż na przykład 200
vazixable
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 21.05.2011

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


@PROBLEM ROZWIĄZANY, WYSTARCZYŁO ZAPYTANIE:
  1. SELECT * FROM player WHERE DATE_SUB(CURDATE(),INTERVAL "'.$nie_aktywni'" DAY) <= last_play

PROSZĘ MODERATORA O ZAMKNIĘCIE TEMATU, I DZIĘKUJĘ ZA POMOC WSZYSTKIM.

Witam.
Mam następujący problem:

Potrzebuję "blokady" wyświetlania rekordów mniejszych o 7 w zapytaniu do MySql.

Mam zapytanie:

  1. SELECT * FROM player WHERE last_play NOT LIKE '".$date."' ORDER BY level DESC, exp DESC, horse_level DESC LIMIT $nastepny_big_ranking_graczy,20


I działa ono dobrze, ponieważ 7dni wstecz dat nie pokazuje równych. Czyli np. jak dzisiaj jest data 2011-05-24 | 21:13, to rekordu 2011-05-17 | 21:13 nie wyświetla. Lecz potrzebuję, aby rekordów starszych niż 7dni nie wyświetlało. Czyli od 7dni wstecz (8dni, 9dni itd.).

Typ komórki to "datetime".

Dziękuję z góry za pomoc,

Pozdrawiam.

Ten post edytował vazixable 24.05.2011, 21:43:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


@Ghost_78 Jeśli już to:
  1. SELECT * FROM player WHERE DATEDIFF($date, last_play) < 7 ORDER BY level DESC, exp DESC, horse_level DESC LIMIT $nastepny_big_ranking_graczy,20
Pewnie by zadziałało, ale nie jest to rozwiązanie optymalne, bo dla każdego wiersza są wykonywane obliczenia, a dopiero później następuje porównanie do 7. W przypadku powyższych zapytań obliczenia są wykonywane raz, a później następuje porównywanie po wierszach.

Ten post edytował mortus 24.05.2011, 21:26:23
Go to the top of the page
+Quote Post
Ghost_78
post
Post #3





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


Cytat(mortus @ 24.05.2011, 22:24:12 ) *
@Ghost_78 Jeśli już to:
  1. SELECT * FROM player WHERE DATEDIFF($date, last_play) < 7 ORDER BY level DESC, exp DESC, horse_level DESC LIMIT $nastepny_big_ranking_graczy,20
Pewnie by zadziałało, ale nie jest to rozwiązanie optymalne, bo dla każdego wiersza są wykonywane obliczenia, a dopiero później następuje porównanie do 7. W przypadku powyższych zapytań obliczenia są wykonywane raz, a później następuje porównywanie po wierszach.


Oczywiście, że może (IMG:style_emoticons/default/smile.gif)
Może być i tak:
  1. SELECT * FROM player WHERE DATEDIFF( last_play, $date) > 7 ORDER BY level DESC, exp DESC, horse_level DESC LIMIT $nastepny_big_ranking_graczy,20


Chodziło mi tylko o metodę.

Zapewne masz rację co do optymalności (IMG:style_emoticons/default/smile.gif) . W przyszłości zapewne przyda mi się ta uwaga w podobnym problemie.
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 04:39