liczba zawodników w każdej drużynie + drużyny które mają 0 zawodników |
liczba zawodników w każdej drużynie + drużyny które mają 0 zawodników |
24.02.2019, 20:41:04
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) |
Witam, proszę o pomoc, muszę podać ilości zawodników wyższych niż 180 cm w poszczególnych drużynach, ale tak, żeby w tabelce istniały wiersze także dla krajów, w których nie ma takich zawodników. W takim wypadku oczywiście w kolumnie oznaczającej liczbę zawodników poniżej 180 cm powinna być wartość 0.
udało mi się wybrać liczbę zawodników w poszczególnej drużynie powyżej 180 cm wzrosu select kraj, count(wzrost) from zawodnicy where wzrost > 180 group by kraj ale nie umiem dodać teraz wierszy z drużynami w których brak jest zawodników powyżej 180 cm, może ktoś pomóc ? |
|
|
24.02.2019, 20:46:39
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
najprościej UNION
|
|
|
24.02.2019, 21:09:27
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 836 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
To powinno pomóc, czyli ogólnie łącznie tej samej tabeli tylko z dodatkowym warunkiem wyszkiwania, a potem połączenie współlnym kluczem.
|
|
|
24.02.2019, 21:19:49
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Jeśli masz unikalny klucz (tu id):
-------------------- |
|
|
24.02.2019, 23:25:36
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) |
z tym union pewenie będzie ok, tylko jak tak zrobię:
select kraj, count(wzrost) as liczbaZawodnikow from zawodnicy where wzrost > 180 group by kraj UNION select kraj, count(wzrost) as liczbaZawodnikow from zawodnicy where wzrost < 180 group by kraj to wyświetla mi tak: kraj liczbaZawodnikow GER 3 FIN 2 AUT 1 NOR 1 POL 2 GER 2 FIN 1 NOR 2 USA 1 i teraz to drugie zapytanie musi być skonstruowane tak aby wyświetliły się tylko kraje gdzie nie ma zawodnika powyżej 180 cm, a mi wyświetla liczbę zawodników z poniżej 180 cm myślę o case when then ale to chyba ciężko będzie w tym przypadku już prawie mam select kraj, count(wzrost) from zawodnicy where wzrost > 180 group by kraj union select kraj, case when wzrost > 180 then 1 when wzrost < 180 then 0 end from zawodnicy group by kraj kraj lizczbaZawodnikow GER 3 FIN 2 AUT 1 NOR 1 POL 0 GER 0 FIN 0 NOR 0 USA 0 tyle ze jeszcze wyswietla niemcy, finladie i norwegie, a tam sa osoby powyżej 180 cm, próbowałem z distinct(kraj) w drugim zapytaniu ale nie działa Jeśli masz unikalny klucz (tu id):
to działa, ale nie rozumiem tego do końca, nie rozumiem w którym miejscu zapytania pojawia się wynik kraju gdzie nie występuje zawodnik ze wzrostem powyżej 180 |
|
|
25.02.2019, 08:12:57
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Dobrze by było abyś zapoznał się z podstawami (chociażby zasadę działania LEFT JOIN), zanim zaczniesz rozwiązywać trudniejsze zadania.
-------------------- |
|
|
25.02.2019, 11:01:06
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 836 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
@djszaki
Próbowałeś to moje rozwiązanie czy pominąłeś? |
|
|
25.02.2019, 11:45:28
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Tomplus,
to jest analogiczne rozwiązanie do mojego, tyle, że delikatnie bardziej skomplikowane. Użyłeś podzapytania gdzie COUNT(1) w połączeniu z LEFT JOIN jest równoważny SUMIF na zewnątrz. -------------------- |
|
|
25.02.2019, 16:22:13
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 836 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Zgadza się. Tylko żeby jeszcze kolega rozumiał te nasze zapytania
|
|
|
25.02.2019, 21:52:22
Post
#10
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) |
rozumiem działanie left join, myślałem, że może da się bez left join wykonać
|
|
|
26.02.2019, 06:51:39
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 836 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Używanie LEFT JOIN to nie jest powód do wstydu.
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 15:12 |