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

mysql - zadanie

Cloud VPS
0 głosów
864 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 3,101 wizyt
0 głosów
1 odpowiedź 749 wizyt
+1 głos
1 odpowiedź 198 wizyt
pytanie zadane 12 września 2023 w SQL, bazy danych przez PropertySamp Nowicjusz (160 p.)

93,485 zapytań

142,417 odpowiedzi

322,765 komentarzy

62,898 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

Kursy INF.02 i INF.03
...