![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam następujący problem: posiadam tabelę w MySql, która wśród kilku innych zawiera kolumny: kategoria i cena. Chcę w php napisać taki kod, by w wyniku uzyskać tabelę składającą się z 3 kolumn. Pierwsza wypisywałaby wszystkie kategorie, druga sumę cen wszystkich elementów należących do tej kategorii, zaś trzecia wartość średnią. Nie wiem czy to uprości zagadnienie, ale jako że ilość kategori jest skończona, można w pierwszej kolumnie wypisać je "na sztywno" bez przeszukiwania bazy, ale te sumy i średnie trzeba już zliczać. Wiem, że SUM i AVG, ale ni jak nie wiem jak to zrobić. Macie jakieś pomysł? Podpowiedzi? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 27.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
SUM/AVG wykorzystujemy w b. prosty sposob:
Kod SELECT AVG(`cena`) AS `srednia_cen`, SUM(`cena`) AS `suma_produktow` FROM `tabela`
Ten post edytował adrian.p 7.04.2009, 09:30:48 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
A jak skonkretyzować zapytanie? Tzn licz sumę (średnią) nie dla całej kolumny tylko dla elementów z konkretnej kategorii?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT AVG(`cena`) AS `srednia_cen`, SUM(`cena`) AS `suma_produktow` FROM `tabela` WHERE `kategoria` = "fajne"
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 27.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dopisujemy tylko "where" z odpowiednimi warunkami.
Kod SELECT AVG(`cena`) AS `srednia_cen`, SUM(`cena`) AS `suma_produktow` FROM `tabela` WHERE `id_kategori` = 123 Chyba ze łaczenie produkt-kategoria masz w innej tabeli, wtedy trzeba by bylo polaczyc te tabele. Ten post edytował adrian.p 7.04.2009, 09:41:42 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, że w ten sposób otrzymam sumę i wartość średnią dla jednej konkretnej kategorii. Czy gdy tych kategorii jest kilka i dla nich wszystkich chce wyliczyć te wartości, to funkcję tę muszę wpisać tyle razy ile jest kategorii, czy też można to jakoś uprościć?
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
wowczas stosujesz group by
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
A w PHP
$zapytanie = "SELECT ...."; i dalej to co powyżej, czy też ten szyk trzeba zmienić? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 27.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dalej wszystko wyglada tak samo.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki!
Ale teraz trzeba to jakoś wyświetlić... Czy jest jakaś nieskomplikowana metoda? Przypominam, że chodzi chodzi tu o php. Wygląd nie musi być jakiś wyszukany. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Ale teraz trzeba to jakoś wyświetlić... zajrzyj wkoncu do manuala... http://pl.php.net/manual/pl/function.mysql-fetch-array.php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wszystkim za pomoc.
Wszystko chodzi jak złoto. Wasze podpowiedzi okazały się skuteczne, a zwłaszcza to napisane przez nospora. Przedstawienie wyników zrobiłem następująco:
może nieco pokrętnie ale działa i wypisuje wszystko w ładnej tabeli. I to by było na tyle... Ten post edytował erix 8.04.2009, 21:03:22
Powód edycji: [erix] na przyszłość używaj bbcode
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 07:02 |