Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]Problem z zapytaniem i wyświetleniem wyniku(ODBC)
dopal
post
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


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?
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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
Go to the top of the page
+Quote Post
dopal
post
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Co racja, to racja smile.gif

Po poprawieniu oczywiście zapytanie działa.


Ten post edytował dopal 29.08.2013, 20:57:32
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 Aktualny czas: 22.08.2025 - 00:47