Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [DB2][PHP][PDO] GROUP BY
Forum PHP.pl > Forum > Bazy danych
giera
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.
buliq
Jesteś pewien że nazwy tabel ujmuje się " a nie znakiem ` ?
Nie lepiej użyć Join?
giera
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.