• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

mysql - zadanie

Object Storage Arubacloud
0 głosów
546 wizyt
pytanie zadane 10 września 2018 w Rozwój zawodowy, nauka, praca przez TaskerPEW Użytkownik (510 p.)
Cześć, mam na zadanie wypisać listę osób w mysql wraz z płciami psów należących do tych osób. Tabela osob (wlascicieli) zawiera id_osoby, imie, nazwisko, telefon, a psów id_psa, rasa, wiek, plec, liczba_medali i id_osoby.
Z góry dzięki za pomoc

1 odpowiedź

0 głosów
odpowiedź 10 września 2018 przez Rettles Bywalec (2,320 p.)
wybrane 11 września 2018 przez TaskerPEW
 
Najlepsza
SELECT w.imie, w.nazwisko, samice.samica, samce.samiec
FROM ((wlasciciele AS w
    INNER JOIN (SELECT id_osoby COUNT(plec) AS samiec FROM psy WHERE plec = "samiec" GROUP BY id_osoby) AS samce
        ON samce.id_osoby = w.id_osoby)
    INNER JOIN (SELECT id_osoby COUNT(plec) AS samica FROM psy WHERE plec = "samica" GROUP BY id_osoby) AS samice
        ON samice.id_osoby = w.id_osoby)

Pierwsze lepsze rozwiązanie jakie mi przyszło do głowy

komentarz 10 września 2018 przez TaskerPEW Użytkownik (510 p.)
Trochę źle napisałem pytanie, wiesz może jak zrobić wypisać to w taki sposob: imie, nazwisko, liczba samic, liczba samcow?
1
komentarz 11 września 2018 przez Rettles Bywalec (2,320 p.)
Pewnie, zaraz zedytuje odpowiedź.
komentarz 11 września 2018 przez TaskerPEW Użytkownik (510 p.)
A mógłbyś trochę to opisać bo nie mogę tego wgl zrozumieć :c
1
komentarz 11 września 2018 przez Rettles Bywalec (2,320 p.)
edycja 11 września 2018 przez Rettles

Dobra wytłumaczę Ci wszystko po kolei. wink

SELECT - wiadomo, wybieramy coś z bazy danych

Co wybieramy?

w.imię, w.nazwisko - kolumny imie i nazwisko, które należą do tabeli właściciele, przy pomocy aliasu (AS) trochę sobie skróciłem zapis z właściciele.imie do w.imie.

samice.samica, samce.samiec - trochę masło maślane, gdyby to zamienić na samica, samiec też byłoby okej (ponieważ nazwy kolumn samiec i samica są unikalne, w przypadku tej kwerendy). Samica to jest liczba samic z tabeli samice, analogicznie samiec.

Skąd tabela samce i samice? To wyjaśnię zaraz.

FROM ((wlasciciele AS w ... - wybieramy dane z następujących  tabel wlasciciele..., (to AS w to ten alias o którym wspominałem na początku)

No i teraz, co może nie być oczywiste na początku przygody z sqlem kwerenda może być tabelą z której wybieramy dane (po FROM), i teraz napisałem kwerendy które posłużą jako tabele - samice i samce i je dołączyłem (przy pomocy inner joina.

INNER JOIN - do tabeli wlasciciele dołączamy samce, tak jak wspominałem samce należy traktować jako tabele która ma dwie kolumny id_osoby oraz samiec

(SELECT id_osoby COUNT(plec) AS samiec FROM psy WHERE plec = "samiec" GROUP BY id_osoby) AS samce - ta kwrenda jest w nawiasie (i musi być) bo stanowi to jedną całą tabele którą przy pomocy aliasu (AS samce) nazwałem ją samce. Ta tabela zwraca dwie kolumny id_osoby i samiec. Id_osoby to wiadomo, potrzebujemy tej kolumny z dwóch powodów - 1. Dla każdej osoby liczymy (COUNT(plec)) ile ma psów jakiejś płci - jakiej płci? (WHERE plec = "samiec"). COUNT jest funkcją agregującą i należy wskazać dla jakiej kolumny ma wykonać obliczenia (count liczy rekordy - wiersze), aby to zrobić używamy GROUP BY id_osoby. Wracając.. Drugi ważny powód to potrzebujemy id aby wykonać złączenie

ON samce.id_osoby = w.id_osoby)

W tym momencie mamy właścicieli z ich samcami i dodajemy do tego (przy pomocy inner joina) samice w analogiczny sposób.

Oczywiście zamiast inner joina można użyć bez problemu odpowiedniego warunku po WHERE, kwestia upodobań ;)

Trochę może to być chaotyczne, więc jak coś jest jeszcze niejasne to śmiało pytaj.

Podobne pytania

+1 głos
2 odpowiedzi 2,439 wizyt
0 głosów
1 odpowiedź 432 wizyt
+1 głos
1 odpowiedź 78 wizyt
pytanie zadane 12 września 2023 w SQL, bazy danych przez PropertySamp Nowicjusz (160 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...