![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 30.09.2003 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem następujący. fragment bazy wygląda tak : [sql:1:61a6ee7165]User (uid, uname) Typy (idtyp, ile, kurs, stan, uid)[/sql:1:61a6ee7165] zrobiłem małe podsumowanie [xml:1:61a6ee7165] Uname Profit Jarek +150 Tosia +20 [/xml:1:61a6ee7165] itd ... kodem jak niżej i utknąłem bo nie umiem tego posortować wg pola profit. [php:1:61a6ee7165]<?php $zapytanie = "SELECT uid, uname FROM user"; $wynik = mysql_query($zapytanie) or die ("Błąd w pytaniu"); while($rezultat = mysql_fetch_array($wynik)) { $userid = $rezultat[0]; $username = $rezultat[1]; $zapytanie = "SELECT sum(ile) FROM typy WHERE stan>0 and stan<3 AND uid = '$userid'"; $wynik = mysql_query($zapytanie) or die ("Błąd w pytaniu"); $zm_tymcz1 = mysql_fetch_array($wynik); $obrot = $zm_tymcz1["sum(ile)"]; $zapytanie = "SELECT sum(ile * kurs) as wynik FROM typy WHERE stan=1 AND uid = '$userid'"; $wynik4 = mysql_query($zapytanie4) or die ("Błąd w pytaniu"); $zm_tymczasowa = mysql_fetch_array($wynik4); $przyszlo = $zm_tymczasowa["wynik"]; $profit = $przyszlo - $obrot; ?> <tr bgcolor=#f2f2f2><td class=text1><?print$username;?>:</td><td align = right class=text3><?printf ("%.2f", $profit);?></td></tr> <?};?> ?>[/php:1:61a6ee7165] Wydaje mi się że można pokombinować też w ten sposób: Zapytania do bazy : $wygrane [sql:1:61a6ee7165]SELECT uid, sum( ile * kurs ) FROM typy WHERE stan = 1 GROUP BY uid [/sql:1:61a6ee7165] $ogółem [sql:1:61a6ee7165] SELECT uid, sum(ile) FROM typy WHERE stan>0 and stan<3 group by uid[/sql:1:61a6ee7165] Jak odejmę $ogolem - $wygrane = $profit i wg tego profitu chcę posortować tą listę powyżej. Nie wiem jak to ugryźć - pomożecie? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
[sql:1:b6bebbbf98]SELECT uid, (sum(ile) - sum(IF(stan=1,ile*kurs,0))) as profit
FROM typy WHERE stan>0 and stan<3 GROUP BY uid ORDER BY profit [/sql:1:b6bebbbf98] :?: -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 30.09.2003 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat :?:
niestety nie działa -> błąd składni |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
A teraz? Przedtem było o jedno ) za dużo.
PS. php Początkujący => Bazy Danych -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 30.09.2003 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat A teraz? Przedtem było o jedno ) za dużo.
PS. php Początkujący => Bazy Danych Lekko podrasowałem ale pomysł rewelacyjny. [sql:1:8c06381bc6]SELECT t.uid, ( sum( IF ( stan = 1, ile * kurs, 0 ) ) - sum( ile ) ) AS profit, u.uname FROM typy t, user u WHERE t.uid = u.uid and stan > 0 AND stan < 3 GROUP BY uid ORDER BY profit DESC [/sql:1:8c06381bc6] Dzięki wielkie. Masz u mnie + P.S. Dużo nauki przede mną ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 30.09.2003 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Tym razem wprowadziłem jeszcze kilka stanów w zmiennej stan i teraz potrzebuję pomocy bo się zamotałem w składni sql-owej.
[sql:1:e178dd25d5]SELECT DATE_FORMAT(datazdarzenia, '%c/%y') as miesiac, (sum( case stan when 5 then (-ile/2) when 4 then ((kurs-1)*(ile/2)) when 3 then ile when 2 then -ile when 1 then (kurs-1)*ile ) ) AS profit FROM `typy` WHERE stan>0 GROUP BY month(datazdarzenia) ORDER BY datazdarzenia[/sql:1:e178dd25d5] Można tak sumować wogóle? Jeżeli mozna po ifie to chyba po case też? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Brakuje zakończenia CASE
[sql:1:b6d68f07c5]SELECT DATE_FORMAT(datazdarzenia, '%c/%y') as miesiac, (sum( case stan when 5 then (-ile/2) when 4 then ((kurs-1)*(ile/2)) when 3 then ile when 2 then -ile when 1 then (kurs-1)*ile end ) ) AS profit FROM `typy` WHERE stan>0 GROUP BY month(datazdarzenia) ORDER BY datazdarzenia[/sql:1:b6d68f07c5] -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 30.09.2003 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Wiedziałem że jestem blisko ale nie że aż tak
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:00 |