Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Problem z zapytaniem i wyświetleniem wyniku(ODBC)
Forum PHP.pl > Forum > Przedszkole
dopal
Witam,

Mam problem z pobraniem w odpowiedni sposób danych z bazy DB2.

Oto fragment tabeli: (pola: id, odplnr, oddwnr, oddni2 )
1 14000 40876 450
2 14000 40876 450
3 14000 40876 450
4 14000 40876 450
5 14000 40876 450
6 14000 40876 600
7 14000 40876 450
8 14000 40876 450
9 14000 40877 0
10 14000 40878 450
11 14000 40879 0
12 14000 40880 450
13 14000 40880 450
14 14000 40880 450
15 14000 40880 450
16 14000 40880 450
17 14000 40880 0
18 14000 40881 450
19 14000 40881 450
20 14000 40881 450
21 14000 40881 450
22 14000 40881 450
23 14000 40881 450
24 14000 40881 450
25 14000 40881 450

Po wykonaniu zapytania chciałbym uzyskać następujący wynik:
1. 14000 40876 (suma oddni2)
2. 14000 40877 (suma oddni2)
3. 14000 40878 (suma oddni2)
4. 14000 40879 (suma oddni2)
5. 14000 40880 (suma oddni2)
6. 14000 40881 (suma oddni2)

Jak pobieram wszystkie dane z tabeli wg opisu poniżej, to wszystko działa ok, ale jednocześnie wyświetla mi całość tabeli
  1. <?php
  2. $query2 = "SELECT ODPLNR, ODDWNR, ODDNI2 from ODDANIA WHERE ODPLNR='14000' AND ODDWNR between '40876' AND '40881'";
  3.  
  4. //poniżej linia 109
  5. $result2 = odbc_exec($connect, $query2) or die( odbc_error());
  6. $x=0;
  7. {
  8. while(odbc_fetch_row($result2))
  9. {
  10. $x++;
  11.  
  12. $od_nrdaw = odbc_result($result2, 1);
  13. $od_nrpla1 = odbc_result($result2, 2);
  14. $od_obj = odbc_result($result2, 3);
  15. {
  16. <tr bgcolor='.$kolor.'><td align="center">'.$x.'</td>
  17. <td align="center">'.$od_nrdaw.'</td>
  18. <td align="center">'.$od_nrpla1.'</td>
  19. <td align="center">'.$od_obj.'</td></tr>';
  20. }}}
  21. ?>

Natomiast gdy chciałem zrobić zapytanie, które mi zrobi sumowanie
  1. $query2 = "SELECT ODPLNR, ODDWNR, sum(ODDNI2) as razem from ODDANIA WHERE ODPLNR='14000' AND ODDWNR between '40876' AND '40881' GROUP BY ODDWNR";

To otrzymuję komunikat:

Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][Sterownik ODBC iSeries Access][DB2 UDB]SQL0122 - Niepoprawna kolumna ODPLNR lub wyrażenie na liście SELECT., SQL state S1000 in SQLExecDirect in D:\www\apache\htdocs\zest_magpoj.php on line 109

Próbowałem jeszcze różnych sposobów tego sumowania, ale szkoda zajmować miejsce w poście, bo zawsze otrzymywałem komunikaty o błędach.

Ma ktoś pomysł jak to powinno być, ewentualnie jakieś wskazówki?
mmmmmmm
W 'normalnym' SQL (w odróżnieniu od badziewia pt. MySQL) w zapytaniu agregującym (wykorzystującym SUM, AVG, COUNT() itp) muszą być tylko : stałe, wartości sumowane, wartośći wg których sumujemy. U ciebie element ODPLNR nie spełnia żadnego z tych 3 warunków.
Prawidłowo powinno być:
  1. SELECT ODPLNR, ODDWNR, sum(ODDNI2) AS razem FROM ODDANIA WHERE ODPLNR='14000' AND ODDWNR BETWEEN '40876' AND '40881' GROUP BY ODDWNR, ODPLNR
dopal
Co racja, to racja smile.gif

Po poprawieniu oczywiście zapytanie działa.
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.