![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.09.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam następujacy problem.
Mam dwie tabele - uzytkownicy (w której przechowywane jest id, nazwa oraz kontrolka czy użytkownik może dostawać pochwały i nagany) oraz wyniki (w której przechowywane są id użytkownika oraz kontrolki - czy użytkownik otrzymał pochwałę czy naganę). Każda informacja o każdej pochwale lub naganie znajduje się w osobnym rekordzie. tabela uzytkownicy user_id, nazwa, uwzgledniaj 1, user1, 1 2, user2, 0 3, user3, 1 4, user4, 1 tabela wyniki user_id, pochwala, nagana 1, 1, 0 1, 0, 1 1, 1, 0 4, 1, 0 3, 0, 1 4, 0, 1 Na podstawie tych dwóch tabel chciałbym otrzymać coś takiego: user1: 2 user4: 0 user3: -1 Czyli zliczyć różnicę pochwał i nagan każdego użytkownika (który może pochwały i nagany otrzymywać) i posortować użytkowników wg tych danych malejąco. Niestety nie wiem jak to zrobić. Proszę o pomoc. Pozdrawiam, Robert Zetakowski |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
slowa kluczowe, ktore są niezbedne przy tej operacji:
LEFT JOIN GROUP BY SUM |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.09.2013 Ostrzeżenie: (0%) ![]() ![]() |
Czy na pewno LEFT JOIN to odpowiednie złączenie dla tego zapytania?
Jest możliwe wykonanie tego wszystkiego w jednym zapytaniu MySQL? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Czy na pewno LEFT JOIN to odpowiednie złączenie dla tego zapytania? Tak. Zwykły JOIN pominąłby użytkowników bez pochwał/nagan. Jest możliwe wykonanie tego wszystkiego w jednym zapytaniu MySQL? Tak. Kluczowe zagadnienia podał Ci ~nospor. Od siebie dodam, że sumować musisz SUM(pochwala - nagana). |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
LEFT jest akurat tu niepotrzebny.
Da się to wykonać jednym zapytaniem. Np. takim:
EDIT: 2 DESC Zwykły JOIN pokaże tylko użytkowników, którzy dostali pochwałę lub naganę. Ten post edytował mmmmmmm 12.09.2013, 10:26:32 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
LEFT jest akurat tu niepotrzebny. Racja, nie zwróciłem uwagi, że na wyjściu ~robertzet pomija user2, który nie ma żadnej pochwały/nagany. PS: Mogłeś zostawić przyjemność złożenia zapytania autorowi, a nie podawać gotowe rozwiązanie na tacy. PS2: Skoro mają być tylko użytkownicy z pochwałami/naganami to chyba wydajniej byłoby pobierać dane z wyniki i joinować użytkowników.
Powód edycji: [phpion]:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.09.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję serdecznie za pomoc.
Pozdrawiam. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
PS: Mogłeś zostawić przyjemność złożenia zapytania autorowi, a nie podawać gotowe rozwiązanie na tacy. Racja. Święte słowa... PS2: Skoro mają być tylko użytkownicy z pochwałami/naganami to chyba wydajniej byłoby pobierać dane z wyniki i joinować użytkowników. A tego nie kumam... Chodzi o kolejność tabel, czy o co? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.09.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
niestety mam kolejny problem. Rozbudowałem bazę danych o dwie kolejne tabele - uwagi i wiadomości. W tabelach tych znajduje się pole user_id oraz treść uwagi/wiadomości o użytkowniku. tabela wyniki user_id, pochwala, nagana 1, 1, 0 1, 1, 0 1, 1, 0 3, 0, 1 3, 1, 0 3, 1, 0 3, 1, 0 tabela uwagi user_id, uwaga 1, lorem ipsum 3, abc 1, qwerty 3, qwerty tabela wiadomosci user_id, wiadomosc 1, lorem ipsum 3, abc 1, qwerty 3, qwerty 3, qwerty 3, qwerty 3, qwerty Moje zapytanie wygląda następująco:
Chciałbym wyciągnąć z tabel dane o pochwałach, ilości uwag o użytkowniku oraz ilości wiadomości o użytkowniku, a więc oczekiwany przeze mnie rezultat powinien wyglądać następująco: user_id: współczynnik pochwał do nagan, ilość uwag, ilość wiadomości 1: 3, 2, 2 3: 2, 2, 5 Natomiast rezultat wygląda następująco: 1: 12, 12, 12 3: 20, 40, 40 Czy jest ktoś w stanie nakierować mnie, w czym tkwi problem? Pozdrawiam. EDIT Problem rozwiązany, może komuś się przyda:
Ten post edytował robertzet 13.09.2013, 14:53:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 20:02 |