![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
mam problem z napisaniem pewnego zapytania. Mam 2 tabele users i users2 każda z tabel ma 29 różnych kolumn jednak skupiamy się na dwóch, pierwsza to id i druga ptk. Id to unikalny numer każdego użytkownika a ptk to liczba jego punktów. Users od Users2 różni się jedynie liczbą punktów użytkowników. Jak mogę odjąć sume jednej kolumny ptk od drugiej? SELECT users.ptk, users2b.ptk AS ptk2 FROM users RIGHT OUTER JOIN (SELECT uid, ptk FROM users2) AS users2b ON users.uid = users2b.uid Tym zapytaniem wywołałem 2 kolumny które chciałbym od siebie odjąć jednak nie mam za pomysłu jak to zrobić. Mogę liczyć na Waszą pomoc? Ten post edytował bananoke 7.03.2011, 11:06:34 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Bierzesz tabele (ja nadałem im aliasy by było lepiej widoczne) i łączysz po id. Może się zdarzyć, że user z danego miesiąca jest nowy i nie istniał w poprzednim miesiącu, stąd późniejszy MOŻE mieć więcej userów i to on jest dla mnie bazowym. Przy próbie JOINa używam więc RIGHT i jeśli tak się stanie to w wyniku a.ptk nie będzie istniało i baza da mi tam NULL zapewne. By to ominąć przy liczeniu różnicy sprawdzam czy kolumna pkt dla miesiąca wcześniejszego wywali mi NULL. Jeśli tak, to biorę pod uwagę tylko stan na ostatni miesiąc jako różnica. Jeśli są wartości w obu miesiącach to liczę różnicę. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 13:25 |