Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie według liczby komentarzy
kiniaz6
post 9.03.2010, 13:12:30
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.03.2010

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


Witam.

Mam problem ze skonstruowaniem odpowiedniego zapytania.

Posiadam tabele w której przechowywane są komentarze takiej struktury:
nazwa: komentarze
pola: id / grupa / tekst_id / komentarz / autor / data / publiczny

i przykładowe dane:
1 / 'moda' / 1 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1
2 / 'moda' / 2 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1
3 / 'uroda' / 2 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 0
4 / 'moda' / 1 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1
5 / 'moda' / 2 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1
6 / 'moda' / 2 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 0
7 / 'moda' / 1 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1
8 / 'moda' / 3 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1
9 / 'moda' / 3 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1
10 / 'moda' / 2 / 'tresc' / 'autor' / 2010-03-07 10:10:10 / 1

oraz tabele w której zapisywane są artykuły, które można przypisać do dwóch
sekcji "Moda", "Uroda".
nazwa: artykuly
id / tresc / autor / data / publiczny

przykładowe dane:
1 / 'tresc' / 'autor' / 2010-03-10:10:10 / 1
2 / 'tresc' / 'autor' / 2010-03-10:10:10 / 1
3 / 'tresc' / 'autor' / 2010-03-10:10:10 / 1

Problem:
Chciałbym wyświetlić liste wszystkich artykułów które przypisane są do
sekcji "Uroda" i posortować je według liczby dodanych komentarzy.

Moje obecne zapytanie wygląda tak:

  1. SELECT COUNT(kom.tekst_id), art.id, art.komentarz, art.DATA, art.autor FROM
  2. artykuly AS art
  3. LEFT JOIN komentarze AS kom ON art.id = kom.tekst_id AND kom.grupa = 'uroda'
  4. AND kom.publiczny = '1'
  5. GROUP BY art.id ORDER BY COUNT(kom.tekst_id) DESC LIMIT 10


niestety nie sortuje poprawnie - dlatego proszę Was o wskazanie błędu który
popełniłem. Nigdy wcześniej nie pisałem tego typu zapytań, a powyższe
zapytanie napisałem opierając się na "wiedzy" z internetu ;-)

Z góry dzięki za pomoc. Pozdrawiam
Go to the top of the page
+Quote Post
thek
post 9.03.2010, 16:25:54
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




Na szybko bez pisania. masz byka, gdyż masz AND zamiast WHERE w 3 linii przed kom.uroda smile.gif Po poprawce powinno już działać.


--------------------
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
kiniaz6
post 9.03.2010, 19:05:17
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.03.2010

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


Błędnie przepisałem zapytanie... poprawiam:
  1. SELECT COUNT(kom.tekst_id), art.id, art.komentarz, art.DATA, art.autor FROM artykuly AS art
  2. LEFT JOIN komentarze AS kom ON art.id = kom.tekst_id AND kom.grupa = 'uroda' AND kom.publiczny = '1'
  3. WHERE art.publiczny = '1' GROUP BY art.id ORDER BY COUNT(kom.tekst_id) DESC LIMIT 10


Zapytanie dalej nie działa tak, jak bym chciał :/ Pomocy smile.gif

Ten post edytował kiniaz6 9.03.2010, 19:14:07
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 04:07