SQL 2.0 (#1) Złączenia tabel w bazie danych | Inner, Left/Right, Full, Self JOIN

Поделиться
HTML-код
  • Опубликовано: 11 июл 2024
  • Partnerem kanału jest justjoin.it - portal z największą ilością ofert pracy z widełkami!
    Szukasz ofert pracy jako developer baz danych? Zajrzyj:
    ▶️ bit.ly/justjoin-sql
    Inne oferty od justjoin.it:
    ▶️ bit.ly/justjoin-python
    ▶️ bit.ly/justjoin-php
    ▶️ bit.ly/justjoin-security
    Jeżeli masz ochotę zobaczyć więcej naszych filmów, podcastów i artykułów w coraz lepszej jakości, to zachęcamy do pozostawienia subskrypcji, a także do odwiedzenia prowadzonych przez nas witryn oraz do polubienia fanpage'u Pasji informatyki na Facebooku.
    🔔 Subskrybuj - bit.ly/pasja-sub
    Jeśli masz ochotę wesprzeć to co robimy, to możesz:
    🖐 Zostać Patronem - patronite.pl/pasja-informatyki
    ☕️ Ufundować nam wirtualną kawę - buycoffee.to/pasja-informatyki
    👉 Fanpage na Facebooku - bit.ly/pasja-fb
    👉 Profil Patronite - patronite.pl/pasja-informatyki
    👉 Lista Patronów - pasja-informatyki.pl/patroni
    👉 Donacje na blogu - miroslawzelent.pl/donate
    👉 Harmonogram publikacji - bit.ly/pasja-harmonogram
    👉 Kontakt z nami - pasja-informatyki.pl/kontakt/
    👉 Współpraca reklamowa - bit.ly/pasja-wspolpraca
    👉 Kursy video dla technikum - pasja-informatyki.pl
    👉 Blog informatyczny - miroslawzelent.pl
    👉 Trenażer egzaminacyjny - egzamin-informatyk.pl
    👉 Egzamin-E13.pl - egzamin-e13.pl
    👉 Forum dyskusyjne - forum.pasja-informatyki.pl/
    👉 Witryna podcastowa - podcast.pasja-informatyki.pl/
    👉 Twitter MZ - / miroslawzelent
    👉 Twitter DS - / stelmach_damian
    📚 Wpis blogowy do tego odcinka:
    miroslawzelent.pl/kurs-mysql/...
    🕐 TIMESTAMPS (CHWILE CZASOWE):
    00:00 Wstęp, partner odcinka: justjoin.it
    01:40 Struktura bazy danych, potrzebne oprogramowanie
    06:50 INNER JOIN
    19:45 LEFT/RIGHT JOIN
    34:50 FULL JOIN
    37:30 Grupowanie danych i JOIN
    41:42 Inne rodzaj złączeń
    #pasjainformatyki #sql #join

Комментарии • 87

  • @RyszardRydzyk-gw9cm
    @RyszardRydzyk-gw9cm Месяц назад

    Dziękuję za tą serię, mam nadzieję, że dzięki niej sprawnie ogarnę temat

  • @Mi205W
    @Mi205W Год назад +19

    Jedyne czego mi brakuje to treści polecenia. Niby drobiazg, ale ułatwia uczenie się i samodzielną prace :)

  • @187Ehrenmann
    @187Ehrenmann Год назад +75

    *Mam nadzieję, że rok 2023 będzie obfitował w treści na tym kanale* 🎁

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад +10

      Też mamy taką nadzieję 🙂 dzięki!

    • @pb6887
      @pb6887 Год назад

      A ja mam pewność że tak będzie.

    • @mateuszcichocki1779
      @mateuszcichocki1779 Год назад

      @@Pasjainformatyki bardzo lubię i cenię sobie waszą serię CTF. Nie dość że poznałem narzędzia o których wcześniej nie słyszałem, co jeszcze omawiacie szczegółowo zagadnienia, dzięki temu łatwiej zrozumieć cały koncept rozwiązywanych zadań :) Liczę na to że w tym roku pojawi się więcej zadań z serii CTF :)

    • @PelczarTomasz
      @PelczarTomasz 9 месяцев назад

      Są dobre...

  • @TheKamoq
    @TheKamoq 7 месяцев назад +2

    Po pierwszym wykładzie nic nie zrozumiałem, ale po obejrzeniu odcinków od 1 do 6 na laboratoriach wiedziałem wszystko co było potrzebne. Po drugim wykładzie od razu wróciłem. Świetna seria, dziękuje bardzo!

  • @adrianrebisz
    @adrianrebisz Год назад +12

    Piękny prezent na święta, pozdrawiam.

  • @najwierniejszykibicousdemb7697
    @najwierniejszykibicousdemb7697 Год назад +3

    czekałem na serie związaną z kontynuacja sql i się doczekałem,dziekuje ❤️

  • @konstantindalmata242
    @konstantindalmata242 Год назад +21

    Pięknie dziękuję za kontynuację kursu! Like poleciał jeszcze przed rozpoczęciem słuchania :)
    Mała propozycja dla kolejnych nagrań - gdy we wcześniejszych filmikach słuchałem zadania/polecenia, było ono również w formie tekstowej wyświetlone na ekranie. Pauzowałem filmik i starałem się najpierw podołać mu samodzielnie, a później sprawdzałem poprawność wyniku. Gdy o wytycznych do zapytania tylko się mówi, jest to trudniej zrobić. Idealnie by było, gdyby treść zadania pojawiała się na ekranie wraz ze schematem połączenia tabel lub ze screenami potrzebnych/wszystkich tabel :D

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад +4

      Dzięki za sugestię! Z pewnością skorzystam w następnym wideo :) Pozdrawiam, DS.

  • @MarcinZajd
    @MarcinZajd Год назад +2

    Cudowne lekcje 😃😃 Bardzo pomocne jest wyświetlenie połączeń/relacji między tabelami

  • @StudyProgrammer96
    @StudyProgrammer96 Год назад +2

    Świetny materiał jasny i klarowny przekaz !

  • @MeggaFelipe
    @MeggaFelipe Год назад

    Przystępnie, powoli i szeroko 10/10

  • @wojciechsobczak6163
    @wojciechsobczak6163 Год назад +2

    Świetny materiał! Czekam na więcej #2, #3, ... 😀

  • @lodowilk_914
    @lodowilk_914 Год назад

    jezu w końcu coś z tego rozumiem, dzięki stary

  • @_I_like_kebeb
    @_I_like_kebeb 2 месяца назад

    dobrze wasze materiały odświeżają wiedzę :D

  • @bader6794
    @bader6794 Год назад +2

    No i mamy to!

  • @DuoJajo
    @DuoJajo Год назад +1

    Paaanie, ratujesz mój projekt zaliczeniowy z baz! Gdyby tylko prowadzący zajęcia na uniwerku umieli tak przekazywać wiedzę...

  • @krzysiekkozio7366
    @krzysiekkozio7366 Год назад

    super objaśnione :)

  • @dzongoodsoon5518
    @dzongoodsoon5518 Год назад

    swietny material

  • @loordvamp1re
    @loordvamp1re Год назад

    super seria ^^

  • @MADZIA0606
    @MADZIA0606 Год назад +1

    *Dzięki*

  • @kapitalis4412
    @kapitalis4412 Год назад

    bardzo ciekawy partner kanału

  • @mateuszhupacz4230
    @mateuszhupacz4230 Год назад

    Super, że pojawił się nowa odsłona!
    Pytanie do Wszystkich. Z SQL zacząłem przygode 2 tyg. temu od właśnie tego kursu. Ten temat bardzo mnie zaciekawił, a ponadto może w przyszłości przydać mi się zawodowo.
    Wydaję mi się, że łapie temat ale świadom jestem, że raczkuje.
    Szukam literatury godnej polecenia. W internetowych księgarniach jest tego sporo.
    Czy znajdą się propozycję dla osoby, która rozpoczyna przygodę z SQL?
    Z góry bardzo dziękuje za pomoc.

  • @kinisharajs4039
    @kinisharajs4039 Год назад +6

    Bardzo dobry materiał jednak brakuje kliku rzeczy w stosunku do poprzednich materiałów z sql
    1 brak polecenia na ekranie ( dużo osób już to zauważyło w kom )
    2 troszeczkę za szybko pan mówi
    3 zdecydowanie brakuje większego wyjaśnienia co dana funkcja robi i pokazanie na przykładzie "co by było gdyby" ( U pana wygląda to jak " tutaj macie zadanie i tak to powinno wyglądać" zamiast " dobrze teraz zajmijmy się tym zadaniem na początku musimy pobrać ta daną z tej tabeli używamy do tego itp...)
    Jednak bardzo dziękuje za materiał i z pewnością dalej będę czekał na kolejne

    • @kamil1119
      @kamil1119 11 месяцев назад +3

      Dokładnie, ja również uważam że ten kurs w wykonaniu Pana Mirosława był lepszy i zgadzam się z punktami wyżej. Jedyna zmiana na plus to, że teraz jest wiecej zadań domowych.

  • @robsonszewczenko8756
    @robsonszewczenko8756 Год назад +2

    Dobry materiał, trochę szkoda że nie ma rozwiązań do zadań domowych.

  • @robertsuda4453
    @robertsuda4453 Год назад +1

    35:53 w klauzulach WHERE użyłem odpowiednio do LEFT JOIN: WHERE wypozyczenia.id_wypozyczenia, a do RIGHT JOIN: WHERE wypozyczenia.id_pracownika i też śmiga, ale jak się zamieni RIGHT i LEFT to działa inaczej. Jeśli w obu klauzulach LEFT RIGHT da się po WHERE wypozyczenia.id_pracownika, to działa tak samo, ale jak się da te same w RIGHT i LEFT po WHERE wypozyczenia.id_wypozyczenia, to już znowu działa inaczej.... czegoś tu nie łapie?

  • @Pasjainformatyki
    @Pasjainformatyki  Год назад +6

    Partnerem kanału jest justjoin.it - portal z największą ilością ofert pracy z widełkami!
    Szukasz ofert pracy jako developer baz danych? Zajrzyj:
    ▶ bit.ly/justjoin-sql

    • @BaliceSpotting
      @BaliceSpotting Год назад

      Strona super, szczególnie widok mapy. Zaciekawił mnie natomiast ich model biznesowy - na czym oni zarabiają? Wiem że nie ładnie tak pytać, z góry przepraszam.

  • @xoy5
    @xoy5 Год назад +3

    Widać dużą wiedzę tej osoby po dosłownie chwili słuchania

  • @kazami291
    @kazami291 Год назад +3

    akurat na inf 03

  • @bartlomiejodachowski
    @bartlomiejodachowski 9 месяцев назад

    36:00 smieszne ze obydwa selecty robią co chcemy mając tego samego WHERE/a. ale tak musi byc. jak sobie wyobrazisz lub rozrysujesz tabele bez klauzuli where, wszytsko ma sens.
    w drugim select, WHERE wypozyczenia.id_pracownika IS NULL mozna zastapic WHERE pracownicy.id_pracownika IS NULL

  • @Drax658
    @Drax658 Год назад

    Mnie dzisiaj SELF JOIN bardzo się przydał, żeby wyciągnąć odpowiednie powiazania między różnymi rekordami, które znajdowały się w tej samej tabeli. Co ciekawe była to tablica bazy danych CMS Joomla! Więc i ten JOIN się przydaje 😅

  • @lisiasty688
    @lisiasty688 Год назад

    witam, jakiego thema użyto w phpmyadmin?

  • @rorschach-content24
    @rorschach-content24 Год назад +2

    Panie Damianie bardzo dobry odcinek... Chciałem się zapytać jak dodałeś taki motyw do phpmyadmin to jest jakiegoś typu rozszerzenie czy jak to wygląda?

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад +2

      Dzięki! :) Motyw, którego używam to blueberry - łatwo znajdziesz w sieci!

    • @rorschach-content24
      @rorschach-content24 Год назад +3

      @@Pasjainformatyki super, dzięki bardzo! motyw bardzo ładnie się prezentuje, jest satysfakcjonujący i dodaje klimatu do phpmyadmin ;)

  • @bartomiejjaszczak7331
    @bartomiejjaszczak7331 Год назад

    komentarz dla statystyk

  • @Albertina65
    @Albertina65 Год назад +2

    Mam pytanie czy bedzie odswierzona wersja poradnika do html,css I js?

  • @kamilslimak6882
    @kamilslimak6882 Год назад

    Co do przykładu zaczynającego się w 29:50 - czy w ogóle potrzebujemy tu używać joinów? id_wypozyczenia jak i id_pracownika które nam są potrzebne znajdują się w tabeli wypozyczenia i możemy za pomocą takiego zapytania:
    SELECT w.id_wypozyczenia FROM wypozyczenia AS w WHERE w.id_pracownika IS NULL;
    uzyskać taki sam efekt jak używając joinów. Myślałem chwilę nad tym i wydaje mi się że robienie tego tak jak na filmie to tylko komplikowanie sobie życia, chyba że czegoś nie zauważam. Ale poza tym przedstawienie tego jak można używać na zmianę left i right join wytłumaczone na plus, po filmie czuje że zrozumiałem jak tego właściwie używać w końcu.

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад

      Tak, tutaj można to zrobić tak jak pokazałeś, bo id_pracownika to kolumna w tablicy wypożyczenia. Dobra robota i dzięki za komentarz! :) Pozdrawiam, DS!

  • @yasiek89
    @yasiek89 Год назад

    W 3:26 wkradł się mały chochlik i w tabeli produkty klucz główny powinien nazywać się id_produktu, a w tabeli zamowienia klucz główny powinien nazywać się id_zamowienia ;)

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад

      Ech te chochliki, czają się tu i ówdzie 😉 dzięki za komentarz! Pozdrawiam, DS 🙂

  • @benzowraczek
    @benzowraczek Год назад

    nie działa mi ta strona po wpisaniu

  • @Voon2008
    @Voon2008 Год назад

    Where to stary standard, kiedyś była bieda :D

  • @yessey111
    @yessey111 Год назад +2

    gdzie jest mirosław?

  • @TomaszTrelaPlus
    @TomaszTrelaPlus Год назад +1

    Odświeżałem sobie wiedzę i gdybym miał taki kurs dostępny 18 lat temu to dużo łatwiej ogarnąłbym te złączenia.
    Brakło słówka o CROSS JOIN, ale także ciekawostek z innych baz danych. Może warto zrobić osobny materiał o różnicach i zaletach takich baz?

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад +3

      CROSS to zazwyczaj iloczyn kartezjański o czym wspominałem 🙂 tak czy inaczej dzięki za komentarz! Pozdrawiam, DS 🙂

  • @godfryddolbinczykunical1571
    @godfryddolbinczykunical1571 Год назад

    Tylko nie zapomnijcie o ALTER i tworzeniu Użytkowników. CREATE USER, GRANT itp.

  • @pleszkowcz
    @pleszkowcz Год назад +2

    Stworzyłem coś takiego z przykładu z 37:01
    SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM wypozyczenia
    JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia=wypozyczenia.id_wypozyczenia
    JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
    LEFT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
    UNION
    SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM wypozyczenia
    JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia=wypozyczenia.id_wypozyczenia
    JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
    RIGHT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
    ORDER BY nazwisko_klienta ASC;

  • @prynioo
    @prynioo 3 месяца назад

    Czy komuś udało się zrobić zadanie 2 z pracy domowej w taki sposób, żeby kazda instancja samochodu pojawiał się tylko raz ze swoją ceną? Ponieważ cena za dobe jest w tabeli dane_wypozyczen (co wydaje się błędem designu bazy?) zamiast byc przypisana do samochodu, to kod wywala mi każdy samochód tyle razy, ile razy został wypożyczony, co jest mało czytelne, a mam wrażenie że jeszcze nie uczyliśmy się niczego co by kasowało powtarzające się wyniki.

    • @A-sl1xp
      @A-sl1xp Месяц назад

      Ja dodałam na końcu GROUP BY samochody.model i pokazuje (wydaje mi się) dobrze

    • @JuliaLove199
      @JuliaLove199 Месяц назад

      ja zrobiłam tak SELECT samochody.marka, samochody.model, dane_wypozyczen.cena_doba, dane_wypozyczen.id_samochodu
      FROM samochody left join dane_wypozyczen on samochody.id_samochodu=dane_wypozyczen.id_samochodu
      GROUP BY samochody.id_samochodu;
      jedynie nie wiem czemu przy BMW wychodzi mi id samochodu NULL 🤨

  • @bogus1666
    @bogus1666 Год назад

    Kojarzycie autonomiczny system egzaminacyjny ?

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад

      Kojarzymy...

    • @bogus1666
      @bogus1666 Год назад

      @@Pasjainformatyki a znacie jakąś podobna platformę co by działała jak ase ?

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад

      Nie kojarzę, ale wydaje mi się, że takie systemy tworzy sobie każdy ośrodek egzaminacyjny wg potrzeb.

    • @bogus1666
      @bogus1666 Год назад

      @@Pasjainformatyki a zrobicie poradnik jak stworzyć taki system ?

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад

      Taki system jest dość złożony, trzebaby zrobić mega serię, a w każdym odcinku omówić osobną funkcjonalność, raczej nie będziemy w to wchodzić 🙂 Pozdrawiam!

  • @R3st0k1n
    @R3st0k1n 11 месяцев назад +2

    Z całym szacunkiem dla DS, ale imo MZ >> DS

  • @karolmach2002
    @karolmach2002 Год назад +2

    Zamiast kawy mógłbyś wyświetlać strukturę bazy, żebyśmy wiedzieli jakie nazwy tabel stosować😊

    • @Pasjainformatyki
      @Pasjainformatyki  Год назад +2

      Struktury było już dużo dlatego wybrałem kawę ;) Dzięki za komentarz! Pozdrawiam, DS :)

  • @krzysztofbuczek5594
    @krzysztofbuczek5594 Год назад

    Słabiutko...

  • @radekradek4108
    @radekradek4108 Год назад +1

    Zadanie z challenge w 37min:
    SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM wypozyczenia
    JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia=wypozyczenia.id_wypozyczenia
    JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
    LEFT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
    UNION
    SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM wypozyczenia
    JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia=wypozyczenia.id_wypozyczenia
    JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
    RIGHT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
    ORDER BY nazwisko_klienta ASC;

  • @wopagangnam
    @wopagangnam Год назад +2

    Przykładowe rozwiązanie do zadania-challengu z odcinka:
    SELECT
    d.id_wypozyczenia,
    s.marka,
    s.model,
    w.data_wyp,
    k.imie_klienta,
    k.nazwisko_klienta
    FROM samochody s
    INNER JOIN dane_wypozyczen d ON d.id_samochodu = s.id_samochodu
    INNER JOIN wypozyczenia w ON w.id_wypozyczenia = d.id_wypozyczenia
    FULL JOIN klienci k ON k.id_klienta = w.id_klienta
    ORDER BY nazwisko_klienta;

  • @delios1122
    @delios1122 7 месяцев назад

    Super materiał!
    Rozwiązanie Challenge:
    SELECT
    wypozyczenia.id_wypozyczenia,
    samochody.marka,
    samochody.model,
    wypozyczenia.data_wyp,
    klienci.imie_klienta,
    klienci.nazwisko_klienta
    FROM samochody
    INNER JOIN dane_wypozyczen ON samochody.id_samochodu = dane_wypozyczen.id_samochodu
    INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia = dane_wypozyczen.id_wypozyczenia
    LEFT JOIN klienci ON klienci.id_klienta = wypozyczenia.id_klienta
    WHERE wypozyczenia.id_klienta IS NULL
    UNION
    SELECT
    wypozyczenia.id_wypozyczenia,
    samochody.marka,
    samochody.model,
    wypozyczenia.data_wyp,
    klienci.imie_klienta,
    klienci.nazwisko_klienta
    FROM samochody
    INNER JOIN dane_wypozyczen ON samochody.id_samochodu = dane_wypozyczen.id_samochodu
    INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia = dane_wypozyczen.id_wypozyczenia
    RIGHT JOIN klienci ON klienci.id_klienta = wypozyczenia.id_klienta
    WHERE dane_wypozyczen.id_samochodu IS NULL

  • @donnadepresjeamarena4452
    @donnadepresjeamarena4452 2 месяца назад

    Mała szansa, że ktoś po takim czasie zweryfikuje ale warto wrzucić rozwiązania do zadania domowego:
    Zad. 1
    select imie_klienta, nazwisko_klienta, data_wyp from klienci
    inner join wypozyczenia on klienci.id_klienta = wypozyczenia.id_klienta
    Zad. 2
    Zad. 3
    select Concat(imie_pracownika, " ", nazwisko_pracownika) as imię_nazwisko from pracownicy
    inner join wypozyczenia on pracownicy.id_pracownika = wypozyczenia.id_pracownika
    Where data_wyp >= "2022-07-01"
    and data_wyp = "2022-04-01"
    and data_wyp < "2022-04-30";
    Zad. 5
    select sum(cena_doba*ilosc_dob) as wartość_wypożyczen, nazwisko_pracownika from samochody
    inner join dane_wypozyczen on samochody.id_samochodu = dane_wypozyczen.id_samochodu
    inner join wypozyczenia on dane_wypozyczen.id_wypozyczenia = wypozyczenia.id_wypozyczenia
    inner join pracownicy on wypozyczenia.id_pracownika = pracownicy.id_pracownika
    Where nazwisko_pracownika = "Nowacki";

  • @tajdi242
    @tajdi242 Год назад

    Mój typ rozwiązania zadania z 37 minuty :)
    to:
    (SELECT
    wypozyczenia.id_wypozyczenia,
    samochody.marka,
    samochody.model,
    wypozyczenia.data_wyp,
    klienci.imie_klienta,
    klienci.nazwisko_klienta
    FROM dane_wypozyczen
    INNER JOIN samochody ON samochody.id_samochodu = dane_wypozyczen.id_samochodu
    INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia = dane_wypozyczen.id_wypozyczenia
    LEFT JOIN klienci ON klienci.id_klienta = wypozyczenia.id_klienta)
    UNION
    (SELECT
    wypozyczenia.id_wypozyczenia,
    samochody.marka,
    samochody.model,
    wypozyczenia.data_wyp,
    klienci.imie_klienta,
    klienci.nazwisko_klienta
    FROM dane_wypozyczen
    INNER JOIN samochody ON samochody.id_samochodu = dane_wypozyczen.id_samochodu
    INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia = dane_wypozyczen.id_wypozyczenia
    RIGHT JOIN klienci ON klienci.id_klienta = wypozyczenia.id_klienta)
    ORDER BY `nazwisko_klienta` ASC;

  • @Kamil-do1yh
    @Kamil-do1yh Год назад +1

    Co to zadanka z 37 min. to mi wyszło coś takiego:
    SPOJLER ;)
    (SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM klienci
    LEFT JOIN wypozyczenia ON klienci.id_klienta = wypozyczenia.id_klienta
    LEFT JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia = wypozyczenia.id_wypozyczenia
    LEFT JOIN samochody ON dane_wypozyczen.id_samochodu = samochody.id_samochodu)
    UNION
    (SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM klienci
    RIGHT JOIN wypozyczenia ON klienci.id_klienta = wypozyczenia.id_klienta
    RIGHT JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia = wypozyczenia.id_wypozyczenia
    RIGHT JOIN samochody ON dane_wypozyczen.id_samochodu = samochody.id_samochodu)
    ORDER BY nazwisko_klienta ASC;

    • @robertsuda4453
      @robertsuda4453 Год назад

      zrobiłem to zadanie tak samo, ale niestety wziąłem po FROM wypozyczenia, a nie klienci i pokazuje taką samą liczbę rekordów, ale nie są tożsame, czyli dalej coś brakuje...

  • @robertsuda4453
    @robertsuda4453 Год назад

    W tym zadaniu challenge są różne wyniki w zależności co się użyje po FROM. Więc nie wiem czy poniższe jest poprawne:
    SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM klienci
    LEFT JOIN wypozyczenia ON klienci.id_klienta = wypozyczenia.id_klienta
    LEFT JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia = wypozyczenia.id_wypozyczenia
    LEFT JOIN samochody ON dane_wypozyczen.id_samochodu = samochody.id_samochodu)
    UNION
    (SELECT wypozyczenia.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta
    FROM klienci
    RIGHT JOIN wypozyczenia ON klienci.id_klienta = wypozyczenia.id_klienta
    RIGHT JOIN dane_wypozyczen ON dane_wypozyczen.id_wypozyczenia = wypozyczenia.id_wypozyczenia
    RIGHT JOIN samochody ON dane_wypozyczen.id_samochodu = samochody.id_samochodu)
    ORDER BY nazwisko_klienta ASC;

  • @user-ny3rt9rv2e
    @user-ny3rt9rv2e 5 месяцев назад

    Ja zrobiłem tak:
    SELECT
    wypozyczenia.id_wypozyczenia,
    samochody.marka,
    samochody.model,
    wypozyczenia.data_wyp,
    klienci.imie_klienta,
    klienci.nazwisko_klienta
    FROM samochody
    LEFT JOIN dane_wypozyczen ON dane_wypozyczen.id_samochodu=samochody.id_samochodu
    LEFT JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
    LEFT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta

    UNION
    SELECT
    wypozyczenia.id_wypozyczenia,
    samochody.marka,
    samochody.model,
    wypozyczenia.data_wyp,
    klienci.imie_klienta,
    klienci.nazwisko_klienta
    FROM samochody
    RIGHT JOIN dane_wypozyczen ON dane_wypozyczen.id_samochodu=samochody.id_samochodu
    RIGHT JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
    RIGHT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
    ORDER BY klienci.nazwisko_klienta ASC

  • @mikoajkaminski1259
    @mikoajkaminski1259 Год назад +4

    Mógłby ktoś podać swoje rozwiązanie tego full joina z 37 minuty? Wydaje mi się że w moim rozwiązaniu może czegoś brakować:
    SELECT
    s.marka,
    s.model,
    w.id_wypozyczenia,
    w.data_wyp,
    k.imie_klienta,
    k.nazwisko_klienta
    FROM samochody AS s
    LEFT JOIN dane_wypozyczen AS dw ON s.id_samochodu = dw.id_samochodu
    LEFT JOIN wypozyczenia AS w ON w.id_wypozyczenia = dw.id_wypozyczenia
    LEFT JOIN klienci AS k ON k.id_klienta = w.id_klienta
    UNION
    SELECT
    s.marka,
    s.model,
    w.id_wypozyczenia,
    w.data_wyp,
    k.imie_klienta,
    k.nazwisko_klienta
    FROM samochody AS s
    RIGHT JOIN dane_wypozyczen AS dw ON s.id_samochodu = dw.id_samochodu
    RIGHT JOIN wypozyczenia AS w ON w.id_wypozyczenia = dw.id_wypozyczenia
    RIGHT JOIN klienci AS k ON k.id_klienta = w.id_klienta;
    Poniżej moje rozwiązania zadania domowego:
    1.
    SELECT
    w.data_wyp,
    k.imie_klienta,
    k.nazwisko_klienta
    FROM wypozyczenia AS w
    LEFT JOIN klienci AS k ON k.id_klienta = w.id_klienta;
    2.
    SELECT
    DISTINCT s.marka,
    s.model,
    dw.cena_doba
    FROM samochody AS s
    LEFT JOIN dane_wypozyczen AS dw ON s.id_samochodu = dw.id_samochodu;
    3.
    SELECT
    p.imie_pracownika,
    p.nazwisko_pracownika
    FROM pracownicy AS p
    RIGHT JOIN wypozyczenia AS w ON p.id_pracownika = w.id_pracownika
    WHERE w.data_wyp BETWEEN '2022-07-01' AND '2022-07-31';
    4.
    SELECT
    s.marka,
    s.model
    FROM samochody AS s
    JOIN dane_wypozyczen AS dw ON s.id_samochodu = dw.id_samochodu
    JOIN wypozyczenia AS w ON w.id_wypozyczenia = dw.id_wypozyczenia
    JOIN klienci AS k ON k.id_klienta = w.id_klienta
    WHERE k.nazwisko_klienta = 'Karwowski' AND w.data_wyp BETWEEN '2022-04-01' AND '2022-09-30'
    ORDER BY w.data_wyp;
    5.
    SELECT
    SUM(dw.cena_doba*dw.ilosc_dob) AS wartosc
    FROM dane_wypozyczen AS dw
    JOIN wypozyczenia AS w ON w.id_wypozyczenia = dw.id_wypozyczenia
    RIGHT JOIN pracownicy AS p ON p.id_pracownika = w.id_pracownika
    WHERE p.nazwisko_pracownika = 'Nowacki'
    GROUP BY p.id_pracownika;
    Pozdrawiam!😊

    • @robertsuda4453
      @robertsuda4453 Год назад

      siemka, mam podobnie.
      w klauzulach WHERE użyłem odpowiednio do LEFT JOIN: WHERE wypozyczenia.id_wypozyczenia, a do RIGHT JOIN: WHERE wypozyczenia.id_pracownika i też śmiga, ale jak się zamieni RIGHT i LEFT to działa inaczej. Jeśli w obu klauzulach LEFT RIGHT da się po WHERE wypozyczenia.id_pracownika, to działa tak samo, ale jak się da te same w RIGHT i LEFT po WHERE wypozyczenia.id_wypozyczenia, to już znowu działa inaczej.... czegoś tu nie łapie?

    • @EffathaRadom-ug9cj
      @EffathaRadom-ug9cj 2 месяца назад

      "Wydaje mi się że w moim rozwiązaniu może czegoś brakować:" - tak, brakuje jednej linijki: ORDER BY nazwisko_klienta

  • @magdalenawalczak4023
    @magdalenawalczak4023 10 месяцев назад

    Ja zrobiłem to tak:
    dotyczy zadania z 37:20
    😀
    SELECT dane_wypozyczen.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta FROM dane_wypozyczen LEFT JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu LEFT JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia LEFT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta UNION SELECT dane_wypozyczen.id_wypozyczenia, samochody.marka, samochody.model, wypozyczenia.data_wyp, klienci.imie_klienta, klienci.nazwisko_klienta FROM dane_wypozyczen RIGHT JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu RIGHT JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia RIGHT JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta ORDER BY `nazwisko_klienta` ASC

  • @Sawio97
    @Sawio97 6 месяцев назад

    Przy ćwiczeniu w PHPmyadmin Wyszukuje mi zupełnie inny wynik, tak jakby NULL był niewidoczny... zapytanie zwraca 66 rekordów zamiast jeden.
    SELECT samochody.model, samochody.marka
    FROM samochody
    RIGHT JOIN dane_wypozyczen ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
    WHERE dane_wypozyczen.id_wypozyczenia IS NULL

  • @Blackartus
    @Blackartus 6 месяцев назад

    Dzięki wielkie. Super kurs.
    SELECT
    wypozyczenia.data_wyp,
    CONCAT(klienci.nazwisko_klienta, " ", imie_klienta) AS Nazwisko_i_imie_klienta
    FROM wypozyczenia
    INNER JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
    ORDER By wypozyczenia.data_wyp;
    SELECT DISTINCT
    samochody.marka,
    samochody.model,
    dane_wypozyczen.cena_doba
    FROM samochody
    INNER JOIN dane_wypozyczen ON dane_wypozyczen.id_samochodu=samochody.id_samochodu;
    SELECT
    pracownicy.imie_pracownika,
    pracownicy.nazwisko_pracownika,
    wypozyczenia.data_wyp
    FROM pracownicy
    INNER JOIN wypozyczenia ON wypozyczenia.id_pracownika=pracownicy.id_pracownika
    WHERE
    data_wyp BETWEEN '2022-07-01' AND '2022-07-31';
    SELECT
    samochody.marka,
    samochody.model,
    wypozyczenia.data_wyp,
    klienci.nazwisko_klienta
    FROM samochody
    INNER JOIN dane_wypozyczen ON dane_wypozyczen.id_samochodu=samochody.id_samochodu
    INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
    INNER JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
    WHERE
    wypozyczenia.data_wyp BETWEEN '2022-04-01' AND '2022-08-31'
    AND klienci.nazwisko_klienta = 'Karwowski';
    SELECT DISTINCT
    SUM(dane_wypozyczen.cena_doba*dane_wypozyczen.ilosc_dob) AS Wartosc,
    CONCAT(pracownicy.nazwisko_pracownika, " ", pracownicy.imie_pracownika) AS Pracownik
    FROM dane_wypozyczen
    INNER JOIN wypozyczenia ON dane_wypozyczen.id_wypozyczenia=wypozyczenia.id_wypozyczenia
    INNER JOIN pracownicy ON wypozyczenia.id_pracownika=pracownicy.id_pracownika
    WHERE pracownicy.nazwisko_pracownika = 'Nowacki'
    GROUP By Pracownik;