Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie liczb ujemnych w MySQL
Largo
post
Post #1





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

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


Witam,

Oto schemat bazy danych na dobry początek:

  1. CREATE TABLE ibf_fg_transactions
  2. (
  3. id int(10) NOT NULL AUTO_INCREMENT,
  4. sender_id int(10) DEFAULT '0',
  5. sender_fg decimal( 10, 2 ) DEFAULT '0.00',
  6. sender_ip varchar(15) DEFAULT '0.0.0.0',
  7. recipient_id int(10) DEFAULT '0',
  8. recipient_fg decimal( 10, 2 ) DEFAULT '0.00',
  9. is_system tinyint(1) NOT NULL DEFAULT '0',
  10. amount decimal( 10, 2 ) NOT NULL SIGNED DEFAULT '0.00',
  11. comment varchar(255),
  12. visible tinytint(1) NOT NULL DEFAULT '0',
  13. date int(10) NOT NULL,
  14. PRIMARY KEY( id )
  15. )


Problem leży w sortowaniu. Sortuję po dacie, po kwocie i po kim, czyli po nazwie użytkownika, a dokładnie odbiorcy, bo wysyłający to my. Po dacie i nazwie działa, ale po kwocie nie. Kwoty zapisuję zazwyczaj tylko jako dodatnie, ale postanowiłem, że systemowe będę zapisywał jako minusowe. I moje pytanie - jak stworzyć zapytanie, które będzie takie coś robiło lub jak zmienić schemat bazy danych?

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





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

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


Witam,

Dlatego to właśnie napisałem! Nie wiem czy tabela nie została przekombinowana, czy dobrze to przemyśleliśmy... Czemu dawałem dodatnie kwoty? Jeden INSERT to informacje dla dwóch osób. Jedna widzi, że otrzymała z klasą CSS dodatnią itp, a inna odwrotnie. Jeżeli zapisywałbym kwotę ujemną zawsze to nie wiem czy to byłoby rozsądne?

Flaga is_system sugeruje to, że transakcja jest systemowa lub jej brak, że nie jest, co dodatkowo oznajmia brak danych nt. odbiorcy ( recipient_id = 0, recipient_fg = 0.00 ), więc ja to tak rozmyśliłem. Może błędnie, chętnie przyjmę nowe sugestie.

Oto dane dla phpion:

  1. SELECT fg.*,s.member_id AS s_id, s.members_display_name AS s_name, s.member_group_id AS s_group, s.donate_icon AS s_icon,r.member_id AS r_id, r.members_display_name AS r_name, r.member_group_id AS r_group, r.donate_icon AS r_icon,t.description FROM ibf_fg_transactions fg LEFT JOIN ibf_members s ON ( fg.sender_id=s.member_id )
  2. LEFT JOIN ibf_members r ON ( fg.recipient_id=r.member_id )
  3. LEFT JOIN ibf_fg_transactions_type t ON ( fg.type=t.type_id ) WHERE sender_id=1 OR recipient_id=1 GROUP BY id ORDER BY date DESC LIMIT 0,30


User -> User:
  1. INSERT INTO ibf_fg_transactions VALUES( 1, 100.00, '10.10.0.1', 2, 1000.00, 0, 50.00, 'Test', 0, '123456789' )


System:
  1. INSERT INTO ibf_fg_transactions VALUES( 1, 100.00, '10.10.0.1', 0, 0.00, 1, -50.00, 'Test', 0, '123456789' )


Pozdrawiam!

Ten post edytował Largo 18.11.2009, 12:05:54
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: 29.12.2025 - 19:25