![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuję zrobić coś takiego jak "Najpopularniejsze newsy". Ma to polegać na tym, że będzie wyświetlać z bazy np. 3 newsy które mają najwięcej komentarzy. I to umiem zrobić. Problem tylko jest taki, że trzeba zrobić ograniczenie tygodnia czyli newsy które pojawiły się w ciągu ostatniego tygodnia i które mają najwięcej komentarzy. W bazie mam wpisaną datę w formacie 09.03.2010 i pewnie potrzebne jest tutaj porównanie daty newsa z aktualną datą - 7 dni. Ale jak to zrobić?
Pozdrawiam -------------------- |
|
|
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
-------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
O super! Czyli post właściwie powinien się znaleźć w sekcji MySQL
![]() -------------------- |
|
|
![]()
Post
#4
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
http://dev.mysql.com/doc/refman/5.0/en/dat...ion_date-format
W tym samym rozdziale. Poza tym masz na dev.mysql.com spis treści oraz wyszukiwarkę. -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok format daty rozwiązany.
Nie wiem czy dobrze zrozumiałem działanie datediff bo mi nie działa ![]() Dzięki mktime obliczyłem datę która była 7 dni temu. Tylko jak teraz napisać zapytanie do MySQLa które wyświetli mi liste newsów z datą między aktualną i tą którą sobie wyliczyłem, biorąc pod uwagę to że date newsów trzymam w bazie w polu 'data'. Sam się zamotałem i nie wiem czy to dobrze rozumiem. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Za dużo motasz
![]() WHERE data > '$wyliczona' i na bank zadziała. Jeśli chcesz w jakichś innych przedziałach czasowych to jedynie te daty liczysz i wstawiasz jako WHERE data BETWEEN '$start' AND '$koniec' Żadna wielka filozofia z ty nie jest związana. -------------------- 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
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kurcze! Ale łatwe
![]() Teraz potrzebuje wyciągnąć z tabeli 'komentarze' takie rekordy których w polu 'news' jest najczęściej powtarzana wartość... nie wiem jak to wytłumaczyć. Po prostu chcę wyświetlić newsy które mają najwięcej komentarzy. Struktura bazy jest taka: Kod NEWS: id | title | tresc KOMENTARZE: id | news | tresc Do pola 'news' w tabeli 'komentarze' wpisuje się ID newsa którego dotyczy komentarz. Nie ma żadnych relacji między tabelami bo jeszcze nie umiem tego robić ![]() Myślałem, że sobie poradzę ale to jednak przewyższa moje umiejętności. -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Cytat z Twojego własnego posta w tym temacie: "będzie wyświetlać z bazy np. 3 newsy które mają najwięcej komentarzy. I to umiem zrobić."
A nagle Twój ostatni post to: "potrzebuje wyciągnąć z tabeli 'komentarze' takie rekordy których w polu 'news' jest najczęściej powtarzana wartość... nie wiem jak to wytłumaczyć. Po prostu chcę wyświetlić newsy które mają najwięcej komentarzy.". Albo ja jestem młotem, albo ktoś mnie w konia ładuje. To umiesz to w końcu zrobić czy nie? Ja się gubię ![]() Bo wybranie o jakim mówisz jest proste i opiera się na dobrze napisanym podzapytaniu gdzie w warunku określisz właściwe id newsa. Podpowiem, że max i count Ci się przydadzą. -------------------- 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
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie myslałem, że umiem i dlatego tak napisałem w pierwszym poście. Ale jak przyszło co do czego to siadłem i się gapiłem w monitor
![]() Ok dzięki, pokombinuje z max i count. Mam coś takiego:
Wyświetla newsy które mają najwięcej komentarzy. Teraz trzeba dołożyć datę i nie wiem jak to zrobić. Poza tym nawet ja widzę, że zapytanie nie jest wydajne. Ten post edytował deha21 9.03.2010, 22:46:57 -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Pomyśl więc o zasadzie, której powinieneś przestrzegać zawsze: "Już w pierwszym kroku ogranicz jak najbardziej liczbę wierszy na jakich operujesz". A czym w pierwszej kolejności to będzie? Ano wyrwaniem z bazy rekordów z określonego przedziału czasowego. To one najbardziej ograniczą liczbę wierszy, na których będziesz operował. A więc już na etapie tworzenia pakietu rekordów tabeli to zrób. Zamiast posyłać do grupowania całość tabeli newsów bądź komentarzy poślij tam jedynie te już okrojone według daty (zależnie czy chcesz newsy z danego okresu czy komentarze). Tak więc zapytanie tyczące newsów z okresu od daty $start do dziś oraz max komentarzy mające to będzie coś w stylu:
Oczywiście sobie dopasuj do potrzeb ![]() -------------------- 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
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ograniczyć to jak chciałem ale nie widziałem jak
![]() ![]() -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To wytłumaczę to łopatologicznie. Wybierz wszystkie rekordy z tabeli newsów, które mają datę większą niż $tart. Teraz połącz je z komentarzami. Tak powstały zbiór pogrupuj po id newsa i policz ile każdy news ma komentarzy. Na koniec posortuj po ilości komentarzy malejąco i wyświetl z tak powstałej tabeli wszystkie pola tabeli newsów oraz ilość komentarzy.
-------------------- 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
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 13:16 |