Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dwa zapytania
yarot
post 29.01.2004, 15:55:20
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?
Go to the top of the page
+Quote Post
spenalzo
post 29.01.2004, 16:18:58
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]

:?:


--------------------

Go to the top of the page
+Quote Post
yarot
post 29.01.2004, 16:31:10
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
Go to the top of the page
+Quote Post
spenalzo
post 29.01.2004, 17:24:47
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


--------------------

Go to the top of the page
+Quote Post
yarot
post 30.01.2004, 09:14:37
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ą smile.gif
Go to the top of the page
+Quote Post
yarot
post 6.02.2004, 16:02:05
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ż?
Go to the top of the page
+Quote Post
spenalzo
post 6.02.2004, 16:05:23
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]


--------------------

Go to the top of the page
+Quote Post
yarot
post 6.02.2004, 16:09:29
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 smile.gif. Thx
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:00