![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Potrzebuję wyciągnąć z bazy danych MySQL sumę komórek z jednej kolumny w tabeli ale tylko tych, które w innej kolumnie mają określoną wartość: przykładowo jest tabela z kolumnami SID oraz P: SID|P 1|2 1|1 1|3 2|2 2|1 3|1 3|1 3|1 I chcę z niej wyciągnąć sumę wszystkich komórek z kolumny P które w kolumnie SID mają wartość 2. czyli 2+1=3 mam cały kod, którym moge wyciągnąć komórkę z bazy: list($payopt) = $database->select($cfg['DB']['table'], array(array('sid'=>2))); $payopt['P'] Z tym ze wyciąga on mi tylko wartość pierwszej komórki dla której SID=2, w tym przypadku 2. Jak zrobić aby wyciągną także wartość drugiej komórki dla której SID =2 (a także kolejnych jeśli takie się pojawią) i zrobił z nich sumę? Może mi ktoś w tym temacie pomóc? (IMG:style_emoticons/default/wstydnis.gif) Ten post edytował mastercherat 24.11.2009, 11:50:27 |
|
|
![]() |
![]()
Post
#2
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
no w pętle to musisz wrzucić.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Domyślam się, tylko że jestem na tyle zielony, że nie wiem jak to zrobić właśnie.
całe to list wrzucić w jakąś pętlę czy jak? jakaś tablica mi się z tego utworzy? i potem sumować jej elementy? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#5
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
tak pion ale żeby dostać te 2 dane musi wrzucić do pętli... tak to wyświetli mu się tylko jeden rekord.
najlepiej:
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Jakie 2 dane? Przecież powyższe zapytanie zawsze zwróci 1 rekord. Generalnie prościej zrobić tak:
PS: i Twój kod jest błędny - zobacz co pakujesz do mysql_fetch_array (IMG:style_emoticons/default/smile.gif) Ten post edytował phpion 24.11.2009, 13:32:46 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
ok jest to jakiś trop (IMG:style_emoticons/default/smile.gif)
ja w phpmyAdmin wpisuję
(oczywiście z wpisana nazwa tabeli to wyświetla sumę. ale jak w pliku dodają linijkę to po wykonaniu dostaję Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /nnn....... |
|
|
![]()
Post
#8
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
tak tak zły pion (IMG:style_emoticons/default/wstydnis.gif)
tak to powinno wyglądać. Cytat Jakie 2 dane? Przecież powyższe zapytanie zawsze zwróci 1 rekord. no powinno 2 zwrócić: SID|P 1|2 1|1 1|3 2|2 2|1 3|1 3|1 3|1 |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
kurde rzeczywiście, ja juz nie nie mówie, bo sie pogrążam, masz 100% racji... :|
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jakie 2 dane? Przecież powyższe zapytanie zawsze zwróci 1 rekord. Generalnie prościej zrobić tak:
o to jest super + drobne poprawki w drugiej linijce zamiast $q to $query oraz modyfikacja, na końcu zamiast wyświetlania, to wrzucenie do nowej zmiennej $r = mysql_result($result, 0);[/php] i dalej już mogę śmiało korzystać z $r (IMG:style_emoticons/default/smile.gif) a poniżej zmodyfikowany kod:
ojojoj.... zapomniałem jeszcze spytać o jedno. co zrobić aby w $query = 'SELECT SUM(P) AS suma FROM tabela WHERE SID=2'; wykorzystać wcześniej zdefiniowaną wartość zamiast z palca wklepywać 2 Wartość tą mam w postaci $opt w przypadku komendy list nie było problemu tam gdzie było 2 wpisałem $opt. ALe jak to samo robię w query $query = 'SELECT SUM(P) AS suma FROM tabela WHERE SID=$opt'; to nie działa. |
|
|
![]()
Post
#13
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
gra muzyka (IMG:style_emoticons/default/guitar.gif)
(IMG:style_emoticons/default/thumbsupsmileyanim.gif) oczywiście w zmiennej mam oczywiście liczbę określającą sid. Dzięki wielkie jeszcze raz ! heh, myślałem że mnie już nic nie zaskoczy , a tu jednak w jednej komórce ma 1,33 a w drugiej 2,33 a suma wychodzi : 3.6599999666214 (IMG:style_emoticons/default/blinksmiley.gif) (IMG:style_emoticons/default/questionmark.gif) ? |
|
|
![]()
Post
#15
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
jakiego typu masz kolumny?
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
sid jest int(11)
natomiast (co pewnie jest bardziej istotne), P jest typu float. z tego co widzę problem jest z drugim miejscem po przecinku. Jeśli jest tam 0 (np. 1,10 + 2,40)to dodaje się normalnie, ale jak już coś tam się pojawi (np. 1,15+2,35) to już suma nie taka jak trzeba. czyli mniejsza o kilka miliardowych (czy jakichś tam (IMG:style_emoticons/default/smile.gif) ) |
|
|
![]()
Post
#17
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
czyli zaokrąglenie zwykłe (IMG:style_emoticons/default/wstydnis.gif)
Ok, ale ważne, że działa (IMG:style_emoticons/default/rolleyes.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 22:53 |