Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Problem z COUNT i WHERE
ewelinac18
post 10.08.2008, 15:59:55
Post #1





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 11.07.2007

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


Witam mam problem z COUNT i WHERE
  1. SELECT u.username, u.user_rank, u.user_id, COUNT(t.id_glos) AS bb, u.glos AS srednia
  2. FROM typy AS t
  3. JOIN phpbb_users AS u ON ( u.user_id = t.id_glos )
  4. GROUP BY u.user_id
  5. ORDER BY srednia DESC


Gdy dodam
  1. WHERE bb > 5


Mam problem bo wyskakuje błąd
Kod
#1054 - Unknown column 'bb' in 'where clause'


Macie może pomysł aby jakoś zastosować to WHERE dla COUNT(t.id_glos) AS bb questionmark.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
AxZx
post 10.08.2008, 16:33:09
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


  1. WHERE COUNT(t.id_glos)> 5


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
ewelinac18
post 10.08.2008, 17:02:32
Post #3





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 11.07.2007

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


też już tak probowałam
Kod
#1054 - Unknown column 'u.glos' in 'field list'
Go to the top of the page
+Quote Post
Zbychu666
post 10.08.2008, 17:03:50
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 5
Dołączył: 13.07.2008

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


Cytat(AxZx @ 10.08.2008, 17:33:09 ) *
  1. WHERE COUNT(t.id_glos)> 5


Hmm... czy to nie zwraca czasami błędu
Kod
#1111 - Invalid use of group function

? smile.gif

Zamiast dawać to w WHERE wstaw na końcu zapytania
  1. HAVING bb > 5

wartość pola bb MySQL zna dopiero po pogrupowaniu wyniku (GROUP BY), które robi już po wykonaniu warunków z WHERE, dlatego trzeba użyć HAVING które wykonuje sie na końcu (filtruje wynik zapytania), ale niestety nie korzysta z indeksów więc trzeba korzystać z rozwagą.
Go to the top of the page
+Quote Post
nospor
post 10.08.2008, 17:04:40
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no ewidentnie tabela phpbb_users nie zawiera kolumny glos


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewelinac18
post 10.08.2008, 17:31:09
Post #6





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 11.07.2007

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


Zbychu666 Masz racje smile.gif
Kod
#1111 - Invalid use of group function


nospor w tabeli phpbb_users nie ma kolumny glos tylko w tabeli typy

Udało sie ale po usunięciu ORDER BY
Kod
SELECT u.username, u.user_rank, u.user_id, COUNT(t.id_glos) AS bb, u.glos AS srednia
FROM typy AS t
JOIN phpbb_users AS u ON ( u.user_id = t.id_glos )
GROUP BY u.user_id
HAVING bb >5


gdy klikam aby wysortowało niestety wyskakuje mi błąd #1054 - Unknown column 'u.srednia' in 'order clause'
chyba wygląda na to ze przy HAVING nie da sie używać ORDER BY questionmark.gif

Ten post edytował ewelinac18 10.08.2008, 17:32:55
Go to the top of the page
+Quote Post
nospor
post 10.08.2008, 17:32:53
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




przeciez srednia to alias wiec
nie: u.srednia
a: srednia


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 31.07.2025 - 10:55