Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Problem z PDO i ORDER BY

Powinno po prostu wyświetlić posty (proste forum), dołączyć dane o użytkowniku i posegregować hronologicznie. Jak wkleje to w pgadmin'a (postgresem chodzi) to działa, a w PDO ni bata.


$query = 'select *, "user"."id" as "uid"'
.' from "post" left join "user" on "post"."user" = "user"."id"'
.' where "topic" = '.$this->topic['id'].''
.' order by "post"."id"';



Warning: PDOStatement::execute() [function.PDOStatement-execute]: SQLSTATE[42803]: Grouping error: 7 ERROR: column "post.id" must appear in the GROUP BY clause or be used in an aggregate function in ...
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: Problem z PDO i ORDER BY

A jak wstawisz przed ORDER BY takie coś:

GROUP BY "post"."id"

to nie pomoże? :>
Tomasz W.

Tomasz W. programista PHP /
web-developer

Temat: Problem z PDO i ORDER BY

Tak BTW, to dlaczego przy nazwach tablic i pul używasz cudzysłowia zamiast `` ?

konto usunięte

Temat: Problem z PDO i ORDER BY

Tomasz W.:
Tak BTW, to dlaczego przy nazwach tablic i pul używasz cudzysłowia zamiast `` ?

bo całe query ujęte jest w '' ??
można stosować zamiennie ZTCW...
Marcin Laber

Marcin Laber internet
technologies
magician

Temat: Problem z PDO i ORDER BY

bo całe query ujęte jest w '' ??
można stosować zamiennie ZTCW...

Owszem, jest ujęte w ' '. A mowa była o odwrotnym apostrofie, czyli ` ` :)
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Problem z PDO i ORDER BY

Czy nikt z was nigdy w postgresie nic nie pisał że zadajecie pytanie o cudzysłów? :D

Jak wstawie group by "post"."id" to wywala info o następnej kolumnie, i tak chcę (pdo) żeby każda kolumna była w group, a to doprowadza do zupełnie innych wyników.
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: Problem z PDO i ORDER BY

To może jeszcze coś takiego:

$query = 'select *, "post"."id", "user"."id" as "uid"'
.' from "post" left join "user" on "post"."user" = "user"."id"'
.' where "topic" = '.$this->topic['id'].''
.' order by "post"."id"';

ewentualnie:

$query = 'select "post".*,"user".*, "user"."id" as "uid"'
.' from "post" left join "user" on "post"."user" = "user"."id"'
.' where "topic" = '.$this->topic['id'].''
.' order by "post"."id"';
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Problem z PDO i ORDER BY

To samo.
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: Problem z PDO i ORDER BY

Bez ORDER BY też jest taki błąd?
ORDER BY po innej kolumnie też daje błąd?

konto usunięte

Temat: Problem z PDO i ORDER BY

A zamiast $query = 'select *, "user"."id" as... wpisać $query = 'select "post"."*", "user"."id" as... ?
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Problem z PDO i ORDER BY

bez ordera działa

rozwiązanie rafała zwraca error składni

Jeszcze raz zaznaczę że ten problem występuje tylko przy używaniu PDO, na czystym postgresie chodzi. To chyba coś z łączeniem nie tak - jeśli chodzi o standardy slq'a.
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: Problem z PDO i ORDER BY

Pokaż jeszcze fragment kodu jakim wywołujesz to zapytanie w PHP. Wiadomo, że PDO coś zmienia w zapytaniu.. Tyko co?:-)
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Problem z PDO i ORDER BY

Zwykłe pdo'we prepare() i execute().

:(
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: Problem z PDO i ORDER BY

Próbowałeś PDO->query($q) ??
Gdzie $q to Twoje zapytanie z ustawionymi na sztywno wartościami, bez parsowania ich przez PDO.
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Problem z PDO i ORDER BY

Wywala to samo. Kurde ten błąd powtarza się w wielu miejscach na moim serwisie. Nie mogę sobie pozwolić na "olanie" order by bo content nie miałby sensu :/
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: Problem z PDO i ORDER BY

Moja ostatnia sugestia (bo nie mam już więcej pomysłów), to maksymalnie uprość zapytanie i dodawaj po kolei coraz bardziej skomplikowane elementy, tak żeby zobaczyć kiedy pojawia się błąd.

Więc np. coś takiego..

1. SELECT * FROM post ORDER BY post.id (nie dawaj tych cudzysłowów na razie..)
2. SELECT post.* FROM post ORDER BY post.id
3. SELECT post.*, user.* FROM post LEFT JOIN user ON post.user = user.id ORDER BY post.id
4. SELECT post.*, post.id as pid, user.* FROM post LEFT JOIN user ON post.user=user.id ORDER BY pid
Marcin Laber

Marcin Laber internet
technologies
magician

Temat: Problem z PDO i ORDER BY

Strzelam najbanalniejszą z możliwości - masz nie tyle błąd w zapytaniu ile w kodzie PHP.
Zrób całe query w jednej linijce i sprawdź czy i tak nie działa, np.:

$query = "select *, user.id as uid from post join user on post.user = user.id where topic = " . $this->topic['id'] . " order by post.id";

Przy okazji wywaliłem te cudzysłowy, moim zdaniem zbędne. Jak od prawie dwóch lat korzystam często gęsto z postgresa, tak nigdy nie cudowałem z jakimiś komentarzami. Tak jak i wystarcza samo "join" zamiast "left join"...Marcin Laber edytował(a) ten post dnia 11.01.08 o godzinie 22:36
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Problem z PDO i ORDER BY

Marcin Laber:
Tak jak i wystarcza samo "join" zamiast "left join"...

między join a left join jest zasadnicza różnica...
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Problem z PDO i ORDER BY

Czasem trzeba użyć "", np jeśli tabela nazywa się "user", albo "group".

Następna dyskusja:

Problem z php i excelem




Wyślij zaproszenie do