Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie po ilości głosów
bonekdg
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.08.2012

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


Witam was bardzo serdecznie, własnie zacząłem uczyć się php i mysql. I mam pewien problem. Nigdzie nie mogłem znaleźć trafnego przykładu.

Pisze aplikacje konkursową.
TABELA Zgłoszenia:
ID Zgłoszenia
TRESC
UZYTKOWNIK

TABELA GLOSY:
IDGLOSU:
IDZGLOSZENIA:
IP
USERAGENT

Relacja 1 - wielu.
I teraz mam pytanie.

Chciałem zrobić sortowanie po największej/najmniejszej ilości głosów.
Nie bardzo wiem jak bym miał się za to zabrać. Musiałbym policzyć (chyba używając count) liczbę głosów i jakoś powiązać to ze zgłoszeniami.
Nie bardzo wiem jak to zapytanie miało by składniowo wyglądać.

Proszę o pomoc.

Dziękuje wam z góry dobrzy ludzie wink.gif

Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Ale w czym problem?

Najprościej tak:

  1. SELECT count(GLOSY.IDZGLOSZENIA) AS count, ZGLOSZENIA.*
  2. FROM GLOSY
  3. JOIN ZGLOSZENIA ON GLOSY.IDZGLOSZENIA = ZGLOSZENIA.IDZGLOSZENIA
  4. GROUP BY GLOSY.IDZGLOSZENIA
  5. ORDER BY count DESC/ASC;
Go to the top of the page
+Quote Post
bonekdg
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.08.2012

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


Dzięki. Nie znałem czegoś takiego jak GROUP BY smile.gif dopiero świeży w tym temacie jestem. Jeszcze mam problem.

Zapytanie zwraca tylko wpisy które mają jakiekolwiek głosy oddane. A ja bym chciał żeby pokazywał wszystkie. Łącznie z tymi które nie mają żadnego.

Dodatkowo zapomniałem o tym wspomnieć mam coś takiego jak DataPotwierdzeniaGłosu. Jeśli jest ==0 to wtedy chciałbym żeby nie zliczało tego głosu. Dość istotne w tym zapytaniu. Postaram się coś sam wykombinować ale jakbyś mi pomógł jeszcze to będę wdzięczny.
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


W takim razie musisz grupować po tym ID z tabeli zgloszenia

więc, nie:

  1. GROUP BY GLOSY.IDZGLOSZENIA


a:

  1. GROUP BY ZGLOSZENIA.IDZGLOSZENIA



No, a tamto z "==0" załatwisz zwykłym
  1. WHERE

To już są podstawy, na które musisz sam wpaść.
Go to the top of the page
+Quote Post
bonekdg
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.08.2012

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


Oj nie do końca tak jak mówiłeś bo zmiana tej grupy niczego nie zmienia; ) Doczytałem w książce że chodzi o leftjoina wink.gif a warunek z zerem dodałem sam wink.gif także dałem rade. Ale gdyby nie twoje pierwsze wskazówki nic bym nie dał rady. Wstawiam kod dla potomnych.

Cytat
"SELECT count(glosy.idzgloszenia) as count, zgloszenia.*
FROM zgloszenia
left JOIN glosy ON glosy.idzgloszenia = zgloszenie.idzgloszenia and datapotwierdzenia!=0
GROUP BY zgloszenia.idzgloszenia
ORDER BY count ASC";


Ten post edytował bonekdg 18.07.2013, 22:35:27
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: 20.08.2025 - 12:15