Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Statystyki transakcji
Largo
post
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

Ostrzeżenie: (0%)
-----


Witam,

Dziś nastał mnie wyjątkowo prosty problem, możliwe, że lekkie zaćmienie umysłu. Mam stworzyć statystyki transakcji. Ile użytkownik wykonał transakcji, ile wysłał i ile otrzymał. Stworzyłem to, ale w 3 zapytaniach, co jest wg. mnie zupełnie nieoptymalne. Czy da się to inaczej obejść? Chciałbym zamknąć to w jednym zapytaniu, jeżeli to w ogóle możliwe.

Pozdrawiam,
Largo
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Twoje zapytania to:
  1. SELECT COUNT(*) AS 'transactions' FROM `fg_transactions` WHERE `sender_id`=$uid OR `recipient_id`=$uid;
  2. SELECT SUM( `amount` ) AS 'minus' FROM `fg_transactions` WHERE `sender_id`=$uid OR type = 1;
  3. SELECT SUM( `amount` ) AS 'plus' FROM `fg_transactions` WHERE `recipient_id`=$uid OR type = 1;


Niestety masz różne warunki, dla różnych pól, zatem w jednym zapytaniu tego łatwo nie będzie. Zastanawiają mnie 2 ostatnie zapytania...

Możesz spróbować z UNION
  1. SELECT COUNT(*) AS 'transactions' FROM `fg_transactions` WHERE `sender_id`=$uid OR `recipient_id`=$uid;
  2. UNION SELECT SUM( `amount` ) AS 'minus' FROM `fg_transactions` WHERE `sender_id`=$uid OR type = 1;
  3. UNION SELECT SUM( `amount` ) AS 'plus' FROM `fg_transactions` WHERE `recipient_id`=$uid OR type = 1;


Lub z podzapytaniami
  1. SELECT
  2. COUNT(*) AS 'transactions'
  3. (SELECT SUM( `amount` ) FROM `fg_transactions` WHERE `sender_id`=$uid OR type = 1) AS 'minus',
  4. (SELECT SUM( `amount` ) FROM `fg_transactions` WHERE `recipient_id`=$uid OR type = 1) AS 'plus'
  5. FROM `fg_transactions` WHERE `sender_id`=$uid OR `recipient_id`=$uid;

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 01:09