Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [DB2][PHP][PDO] GROUP BY
giera
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.11.2012

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


Witam
Prosił bym o pomoc w rozwiązaniu problemu mianowicie próbuje przez PDO wykonać polecenie group by które analogicznie wykonane na mysql czy posgree działa bez problemu, mianowicie:

  1. $group='SELECT "customers"."customerName",SUM("payments"."amount")
  2. FROM "customers", "payments"
  3. WHERE "customers"."customerNumber"="payments"."customerNumber"
  4. GROUP BY "customers"."customerNumber"';
  5.  
  6. $test1 = $con->prepare($group);
  7. $test1->execute();
  8. $test1->fetch();
  9. $test1->closeCursor();


na co try catch mi wyłapuje:

SQLSTATE[42803]: Grouping error: -119 [IBM][CLI Driver][DB2/NT64] SQL0119N Wyrażenie rozpoczynające się od "customerName", podane w klauzulach SELECT, HAVING lub ORDER BY nie zostało podane w klauzuli GROUP BY lub występuje w klauzulach SELECT, HAVING lub ORDER BY razem z funkcję kolumnową i nie została podana klauzula GROUP BY. SQLSTATE=42803 (SQLExecute[-119] at ext\pdo_odbc\odbc_stmt.c:254)

Wiem że ze skryptu dla programu nic nie wyniki w sensie że nic nie robię z tymi danymi ale nie są mi potrzebne, liczy sie dla mnie tylko czas wykonania zapytania który mierzę microtime (usunąłem to w poście).
Nie mam zielonego pojęcia o co mu chodzi :/
Z połączeniem jest ok i inne zapytania też śmigają jak złoto.
Proszę o pomoc jeszcze raz, pozdrawiam.

Ten post edytował giera 27.02.2013, 20:26:50
Go to the top of the page
+Quote Post
buliq
post
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


Jesteś pewien że nazwy tabel ujmuje się " a nie znakiem ` ?
Nie lepiej użyć Join?
Go to the top of the page
+Quote Post
giera
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.11.2012

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


ba pewnie ze lepiej tym bardziej że join chodzi jak trzeba no ale chce przetestować wszystkie opcje zreszta grup to naprawdę dość fajna sprawa.
` - tak ale w mysql, db2 nie toleruje tego znaku a biorąc pod uwagę ograniczenia php mam tylko do użycia " , ' oraz \' (to dla wartości typu string)

co ciekawe jak zmienię na group by orderNumber na orderName to niby pobierze mi orderName ale już countrow() wyświetla mi -1 a po probie wyświetlenia w while dostaje poprawna ilość wierszy z tym że moge zapomieć o wyświetleniu sum(...), coś krzyczy że nie tak.

echo $row['SUM(payments.amount)']; <-- mysql łyka
analogicznie dla db2
echo $row['SUM("payments"."amount")']; <-- takiego ...
próbowałem dać już chyba wszystkie konfiguracje i klapa żeby to wywołać, pewnie coś z zapytaniem nie gra, tylko co

EDIT: rozgryzłem trzeba użyć przy zapytaniu "SUM("payments"."amount") AS suma" i wyświetla ale caly czas ten wcześniejsze zapytanie nie dziala dla db2

Ten post edytował giera 27.02.2013, 21:31:37
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:59