Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zapytaniem, You have an error in your SQL syntax
NetJaro
post 20.12.2005, 17:45:21
Post #1





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Witam, mam zapytanie:

  1. <?php
  2. $query = "SELECT member_details.jointed_date, member_details.f_name, member_details.l
    ogin, member_details.mem_id, member_details.email_id, count(member referrals.mem_id) as 'dupa' FROM `member_referrals`, member_details where member_details.mem_id=member_refe
    rrals.parent_id and member_details.joined_date >= '2005-09-30' in member_details.mem_id=member_referrals.mem_id group by member_referrals.pare
    nt_id order by 'dupa' DESC limit 0,30"
    ;
  3. ?>


Jednak pojawia się błąd:

Cytat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'member_details.mem_id=member_referrals.mem_id group by member_referrals.parent_' at line 3


Co tutaj jest źle?

Ten post edytował NetJaro 20.12.2005, 17:48:30
Go to the top of the page
+Quote Post
kszychu
post 20.12.2005, 17:49:32
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Ten post brzmiał:
Cytat
Poprawna składnia to pole.tabela a nie jak u Ciebie tabela.pole

Przy okazji zwróć uwagę na umieszczanie postów we właściwych kategoriach. Ten przenoszę.


Ale jest to mój chory wymysł i nijak się ma do specyfikacji. Proszę się nim nie sugerować!


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
NetJaro
post 20.12.2005, 17:52:40
Post #3





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Aha, czyli zamiast 'member_details.jointed_date' dać 'jointed_date.mamber_details' ?

Możecie mi coś podpowiedzieć co do aliasów (aby zapytanie mniej zajmowało)?

P.S Przepraszam za złe umieszczenie tematu - pomyłka.

Pozdrawiam.
Go to the top of the page
+Quote Post
kszychu
post 20.12.2005, 17:59:59
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Zamiast długich nazw tabel możesz używać ich aliasów. Alias definiujesz w sposób:
FROM bardzo_dluga_nazwa_tabeli as t1
i w całym zapytaniu możesz stosować:
SELECT t1.pole1, t1.pole2
oraz w warunkach:
WHERE t1.pole1= t2.pole2 (dla jakiejś innej tabeli t2)

Aliasy możesz również stosować dla nazw pól, np:
SELECT t1.pole1 as p1, t1.pole2 as p2 Później, przy wyciąganiu danych używasz już sobie tylko nazw p1 i p2 jako nazw pól.

Nazwa aliasów mogą być dowolne, ważne jednak, by nie kolidowały z nazwami tabel i pól oraz słowami kluczowymi dla mysqla.

-------------------------------------------
Update: Ten post też zmodyfikowałem.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
SongoQ
post 20.12.2005, 18:56:57
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
Poprawna składnia to pole.tabela a nie jak u Ciebie tabela.pole

Pierwsze slysze. Gdzie o tym slyszales?

Zawsze tak bylo i zawsze tak bedzie schemat.tabela.pole w Twoim przypadku tabela.pole.

Cytat
FROM bardzo_dluga_nazwa_tabeli as t1

W stanardzie SQLa nie zaleca sie stosowaine AS przed nazwa tabeli, w niektorych bazach to poprostu niedziala.

Cytat
member_details.joined_date >= '2005-09-30' in member_details.mem_id=member_referrals.mem_id

NIe ma czegos takiego w SQLu

Jesli masz agregacje w to pozostale pola musisz wymienic w GROUP BY

p.s.
@kszychu Po tobie bym sie takiej odpowiedzi nie spodziewal. sad.gif


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 20.12.2005, 19:07:59
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


joined_date AIN'T joinTed_date


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
kszychu
post 20.12.2005, 19:08:09
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Cytat(SongoQ @ 2005-12-20 18:56:57)
Cytat
Poprawna składnia to pole.tabela a nie jak u Ciebie tabela.pole

Pierwsze slysze. Gdzie o tym slyszales?

Radosna twórczość własna spowodowana przeciążeniem pracą, nadmiarem (niedoborem, sam już nie wiem) kawy i Bóg wie czym jeszcze.

oczywiście w pierwszym poście w tym wątku napisałem takie głupoty, że jak teraz patrzę to mi wstyd!

Poprawię to, by ktoś przypadkiem nie zauważył i się nie zasugerował.
@NetJaro: bardzo Cię przepraszam, że wprowadziłem Cię w błąd.
@songoQ: dzięki za kubeł wody na łeb, czasami jest potrzebny.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
NetJaro
post 20.12.2005, 19:42:52
Post #8





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


@SongoQ, czyli jak to powinno odpowiednio wyglądać?

@kszychu, OK winksmiley.jpg
Go to the top of the page
+Quote Post
SongoQ
post 21.12.2005, 00:22:35
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


W Twoim przypadku zwracasz za duzo pol z funkcja agregujac i najoptymalniej mozna zrobic to jako podselect aby nie powtarzac po GROUP BY wszystkich pol.

Przyklad, bo niestety z Twojego zapytania nie zrozumialem co jest co.
  1. SELECT
  2. member_details.jointed_date,
  3. member_details.f_name,
  4. member_details.login,
  5. member_details.mem_id,
  6. member_details.email_id,
  7. t.ilosc
  8. FROM ( SELECT x, COUNT(*)
  9. FROM member_referrals GROUP BY x
  10. ) t, member_details
  11. WHERE t.x = member_details.x
  12. .
  13. .
  14. .


Mam nadzieje ze pomoglem 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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:39