Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie po ilości głosów
Forum PHP.pl > Forum > Bazy danych > MySQL
bonekdg
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

Damonsson
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;
bonekdg
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.
Damonsson
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ść.
bonekdg
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";
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.