![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Dla opisania problemu urzyję jednego przykładu, generalnie zapytanie tyczy się całej tabeli oddania,a nie jednego przykładu. w polu ODDNI2 są wartości liczbowe 100,150...600, 650. W polu ODSRDK znajdują się różne skrótowe nazwy, które są przypisane do określonych wartości z pola ODDNI2 np: ODDNI2=450 to ODSRDK=EK lub KP itd. Chcę stworzyć zapytanie, które wybierze mi z tabeli ODDANIA, takie pozycje, których suma pól ODDNI2 będzie większa od 20000.
To zapytanie działa mi ok i otrzymuję dobre wyniki, ale SUM(ODDNI2) AS NUMER, powinna być sumą z takich oto zapytań:
i dopiero ta suma powinna być większa od 20000. Ja zrobić te podzapytania w zapytaniu? Jednocześnie chciałbym by w wystwietlanej tabeli mieć zarówno pozycję NUMER z 1 zapytania, jak i NUMER_KP i NUMER_OS czyli np. ODPLNR ODDWNR NUMER NUMER_KP NUMER_OS 14000 40876 5000 3250 1750 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 30.08.2013 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Zapodaj jeszcze error z mysql'a
-------------------- Sklep z lampami - http://www.krislamp.pl
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie miało by mniej więcej tak wyglądać ( oczywiście ta forma nie działa )
a błąd jest taki: Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][Sterownik ODBC iSeries Access][DB2 UDB]SQL0104 - Niepoprawny leksem ODPLNR. Poprawne leksemy: ) ,., SQL state 37000 in SQLExecDirect in D:\www\apache\htdocs\zest_magpoj.php on line 132 Dla jednego rekordu zrobiłem takie zapytanie które działa:
Wynik wyświetlenia jest prawidłowy. A jak to zrobić dla całej tabeli, by było grupowanie wszystkich rekordów po polach ODPLNR, ODDWNR i wybierał sumę np. (NUMER_OS+NUMER_KP) > '3000' to ciągle nie wiem. Ten post edytował dopal 30.08.2013, 12:02:03 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Coś w ten deseń:
dalej sam kombinuj. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kombinuje
![]() ale nie do końca wychodzi
Tak mi działa, ale w HAVING powinien być taki warunek: SUM(CASE WHEN ODSRDK IN ('EK', 'KP') THEN ODDNI2 END * 2) + SUM(CASE WHEN ODSRDK IN ('EP', 'FA') THEN ODDNI2 END / 3) >'2000' Przy zrobieniu takiego zapisu nie otrzymuję żadnego wyniku. Drugi problem, z którym sobie nie radzę to suma SUM(CASE WHEN ODSRDK IN ('EK', 'KP') THEN ODDNI2 END * 2) + SUM(CASE WHEN ODSRDK IN ('EP', 'FA') THEN ODDNI2 END / 3) AS NUMER
Oto fragment wyników: lp. odplnr oddwnr numer_kp numer_os numer _______________________________________________ 13165 | 14002 | 3959 | 1800 | 0 | 0 13166 | 14002 | 3960 | - | 7650 | 0 13167 | 14002 | 3961 | - | 450 | 0 13168 | 14002 | 3962 | 6750 | 200 | 6950 13169 | 14002 | 3963 | 4950 | 416.67 | 5366.67 13170 | 14002 | 3964 | 7650 | 433.33 | 8083.33 13171 | 14002 | 3965 | 10800 | 1950 | 0 13172 | 14002 | 3966 | 1800 | 216.67 | 2016.67 13173 | 14002 | 3967 | 1350 | 0 | 0 13174 | 14002 | 3968 | 17100 | 9450 | 0 13175 | 14002 | 3969 | 2250 | 0 | 0 Generalnie jeśli w numer_kp i numer_os jest jakiś wynik, to pozycja numer zostaje wyliczona ( choć w lp.13174 widać, że nie zawsze ). Jeśli jest numer_os, a nie ma numer_kp, to numer nie zostaje wyliczony, a jeśli numer_kp jest uzupełniony, a w numer_os wynik wynosi 0, to numer nie zostaje wyliczony. Zamiast - w wyświetlanej tabeli jest tylko puste miejsce. Przy "pomocy" PHP udaje mi się to zrobić jak trzeba, ale chciałbym to wszystko zamieścić w 1 sql i z tym zapytaniem mam problemy. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 01:49 |