Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]podzapytanie
jacusek
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


Witam
Mam takie zapytanie i cały czas wyskakuje mi błąd ze składnią? Czy mógłby mi ktoś powiedzieć gdzie on może być bbo już kombinowałem na różne strony:
  1. SELECT DISTINCT date_format(czas, '%k'), count((IF(date_format(czas,'%w')=1)),czas,0) FROM billingi GROUP BY 1 ORDER BY 1 ASC

Błąd dotyczy podzapytania.
czas to termin połączenia w formacie datetime
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




Skoro dostajesz bład, to czy tak trudno ten błąd nam tu wkleic? Czy naprawdę trzeba pisać do Ciebie podanie z prośbą o podanie tego błędu?


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

"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
jacusek
post
Post #3





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


Masz rację nospor
Napisałem, ze podaje mi błąd ze składnią dokładnie w okolicach ')),czas)'

Ten post edytował jacusek 28.10.2010, 09:36:20
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




pomyliły ci się nawiasy
Zobacz też jak poprawnie wygląda konstrukcja IF bo też ci sie pomylilo - chodzi też głównie o nawiasy

Cytat
Napisałem, ze podaje mi błąd ze składnią dokładnie w okolicach ')),czas)'
Nie, wczesniej tego nie napisales. Napisales to dopiero teraz, po zlozeniu podania przeze mnie smile.gif
Powód edycji: [nospor]:


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

"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
jacusek
post
Post #5





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


szukam tego błędu i nie mogę go znaleźć. Kombinuję już z różnych stron i nie bardzo wiem jak dalej się do tego zabrać.
Opiszę swój sposób rozumowania, a może powiesz mi gdzie mogę robić błąd:
funkcja if w podzapytaniu polega na:
Jeżeli pierwsze wyrażenie - w moim przypadku
  1. date_format(czas,'%w')

jest różne od zera i różne od null - a jest smile.gif wówczas zwraca wartość nr 2, w innym przypadku zwraca numer 3.
Więc jeżeli logicznie rozumuje to:

  1. count(IF(date_format(czas,'%w')=1),id_pol,0)

Gdzie w takim razie robię błąd?
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Już ci mowilem: masz blad w nawiasach a nie w logice.
  1. SELECT DISTINCT date_format(czas, '%k'), count(IF(date_format(czas,'%w')=1,czas,0)) FROM billingi GROUP BY 1 ORDER BY 1 ASC

Pozatym dla count jak podasz 0 to chyba policzy. Null nie bedzie liczony, wiec powinno byc
  1. SELECT DISTINCT date_format(czas, '%k'), count(IF(date_format(czas,'%w')=1,czas,NULL)) FROM billingi GROUP BY 1 ORDER BY 1 ASC


Nie wnikam już o co ci chodziło z tymi groub by 1 o order by 1.... Chyba nie dales dla pól nazw numerycznych?


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

"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
jacusek
post
Post #7





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


Dzięki za pomoc. Zdaje się, że na siłę próbowałem zamknąć date_format, a nie było widać takiej potrzeby. Group by 1 i order by 1 to aliasy które o dziwo automatycznie przypisują się do kolumn w mysql. Tak oczywiście kolumn nie nazywałem, a używam tego bo to wygodniejsze w zapytaniach na etapie prób.
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Cytat
Zdaje się, że na siłę próbowałem zamknąć date_format, a nie było widać takiej potrzeby
Dlatego powiedziałem, byś zajrzał do manuala i zobaczył jak wygląda IF. Niestety mnie olałeś sad.gif

Cytat
Group by 1 i order by 1 to aliasy które o dziwo automatycznie przypisują się do kolumn w mysql.
A tego nie wiedziałem smile.gif


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

"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
jacusek
post
Post #9





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


oj nie olałem, nie zwróciłem na to uwagi - fakt - czasami najtrudniej zauważyć własny błąd.

A co do group by i order to tak to działa w Oraclu smile.gif i kiedyś przez pomyłkę wpisałem i okazało się że w Mysql też smile.gif
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 - 08:40