{"id":522,"date":"2022-12-17T16:25:43","date_gmt":"2022-12-17T15:25:43","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=522"},"modified":"2023-12-12T12:24:50","modified_gmt":"2023-12-12T11:24:50","slug":"zlaczenia-tabel-w-mysql-operator-inner-join","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/zlaczenia-tabel-w-mysql-operator-inner-join\/","title":{"rendered":"Z\u0142\u0105czenia tabel w MYSQL &#8211; Operator INNER JOIN"},"content":{"rendered":"<p>Inner join w MySQL to rodzaj z\u0142\u0105czenia tabel, kt\u00f3ry pozwala na po\u0142\u0105czenie dw\u00f3ch tabel w taki spos\u00f3b, \u017ce w wynikowym zestawie danych znajduj\u0105 si\u0119 tylko te rekordy, kt\u00f3re maj\u0105 pasuj\u0105ce warto\u015bci w kolumnach po\u0142\u0105czonych za pomoc\u0105 operatora <code>JOIN<\/code>.<\/p>\n<p>Oto przyk\u0142ad z\u0142\u0105czenia tabel &#8222;U\u017cytkownicy&#8221; i &#8222;Zam\u00f3wienia&#8221; za pomoc\u0105 operatora <code>INNER JOIN<\/code>:<\/p>\n<p><code>SELECT Uzytkownicy.Imie, Uzytkownicy.Nazwisko, Zamowienia.Data-Zamowienia<\/code><br \/>\n<code>FROM Uzytkownicy<\/code><br \/>\n<code>INNER JOIN Zamowienia ON Uzytkownicy.ID-Uzytkownika = Zamowienia.ID-Uzytkownika;<\/code><\/p>\n<p>W tym przyk\u0142adzie kwerenda zwr\u00f3ci wszystkie rekordy z tabeli &#8222;U\u017cytkownicy&#8221; i &#8222;Zam\u00f3wienia&#8221;, kt\u00f3re maj\u0105 pasuj\u0105ce warto\u015bci w kolumnie &#8222;ID U\u017cytkownika&#8221;. Je\u015bli w tabeli &#8222;Zam\u00f3wienia&#8221; istnieje rekord z &#8222;ID U\u017cytkownika&#8221;, kt\u00f3rego nie ma w tabeli &#8222;U\u017cytkownicy&#8221;, to taki rekord nie zostanie uwzgl\u0119dniony w wyniku.<\/p>\n<p>Ta kwerenda <code>SELECT<\/code> \u0142\u0105czy tabele &#8222;U\u017cytkownicy&#8221; i &#8222;Zam\u00f3wienia&#8221; za pomoc\u0105 operatora <code>INNER JOIN<\/code> i wy\u015bwietla imi\u0119, nazwisko i dat\u0119 zam\u00f3wienia dla wszystkich u\u017cytkownik\u00f3w, kt\u00f3rzy z\u0142o\u017cyli zam\u00f3wienie.<\/p>\n<p>Operator <code>INNER JOIN<\/code> pozwala na po\u0142\u0105czenie dw\u00f3ch tabel w taki spos\u00f3b, \u017ce w wynikowym zestawie danych znajduj\u0105 si\u0119 tylko te rekordy, kt\u00f3re maj\u0105 pasuj\u0105ce warto\u015bci w kolumnach po\u0142\u0105czonych za pomoc\u0105 operatora <code>JOIN<\/code>. W tym przypadku kolumny po\u0142\u0105czone s\u0105 za pomoc\u0105 operatora <code>ON Uzytkownicy.ID-Uzytkownika = Zamowienia.ID-Uzytkownika<\/code>, co oznacza, \u017ce w wyniku zostan\u0105 uwzgl\u0119dnione tylko te rekordy, w kt\u00f3rych warto\u015bci kolumn &#8222;U\u017cytkownicy.ID U\u017cytkownika&#8221; i &#8222;Zam\u00f3wienia.ID U\u017cytkownika&#8221; s\u0105 sobie r\u00f3wne.<\/p>\n<p>Przyk\u0142adowo, je\u015bli tabele &#8222;U\u017cytkownicy&#8221; i &#8222;Zam\u00f3wienia&#8221; zawieraj\u0105 nast\u0119puj\u0105ce dane:<\/p>\n<p><code>U\u017cytkownicy:<\/code><br \/>\n<code>ID-Uzytkownika | Imie | Nazwisko<\/code><br \/>\n<code>----------------|-------|---------<\/code><br \/>\n<code>1 | Jan | Kowalski<\/code><br \/>\n<code>2 | Anna | Nowak<\/code><br \/>\n<code>3 | Piotr | Wi\u015bniewski<\/code><\/p>\n<p><code>Zam\u00f3wienia:<\/code><br \/>\n<code>ID-Uzytkownika | Data-Zamowienia<\/code><br \/>\n<code>----------------|----------------<\/code><br \/>\n<code>1 | 2021-01-01<\/code><br \/>\n<code>2 | 2021-01-02<\/code><br \/>\n<code>3 | 2021-01-03<\/code><\/p>\n<p>W wyniku wywo\u0142ania tej kwerendy otrzymamy nast\u0119puj\u0105ce dane:<\/p>\n<p><code>Imie | Nazwisko | Data-Zamowienia<\/code><br \/>\n<code>-------|----------|----------------<\/code><br \/>\n<code>Jan | Kowalski | 2021-01-01<\/code><br \/>\n<code>Anna | Nowak | 2021-01-02<\/code><br \/>\n<code>Piotr | Wi\u015bniewski | 2021-01-03<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>ni\u017cej dane do \u0107wicze\u0144 na konkretnych danych:<\/p>\n<p><code>-- Tworzenie tabeli U\u017cytkownicy<br \/>\nCREATE TABLE Uzytkownicy (<br \/>\nID_Uzytkownika INT PRIMARY KEY,<br \/>\nImie VARCHAR(50),<br \/>\nNazwisko VARCHAR(50)<br \/>\n);<\/code><\/p>\n<p><code>-- Uzupe\u0142nienie tabeli U\u017cytkownicy<br \/>\nINSERT INTO Uzytkownicy (ID_Uzytkownika, Imie, Nazwisko) VALUES<br \/>\n(1, 'Jan', 'Kowalski'),<br \/>\n(2, 'Anna', 'Nowak'),<br \/>\n(3, 'Piotr', 'Wi\u015bniewski'),<br \/>\n(4, 'Ewa', 'Maj'),<br \/>\n(5, 'Tomasz', 'Lis'),<br \/>\n(6, 'Katarzyna', 'Jab\u0142o\u0144ska'),<br \/>\n(7, 'Marek', 'Borowski'),<br \/>\n(8, 'Magdalena', 'Kwiatkowska'),<br \/>\n(9, 'Jacek', 'W\u00f3jcik'),<br \/>\n(10, 'Iwona', 'Kubiak');<code>\/<\/code><\/code><\/p>\n<p><code>-- Tworzenie tabeli Zam\u00f3wienia<br \/>\nCREATE TABLE Zamowienia (<br \/>\nID_Uzytkownika INT,<br \/>\nData_Zamowienia DATE,<br \/>\nFOREIGN KEY (ID_Uzytkownika) REFERENCES Uzytkownicy(ID_Uzytkownika)<br \/>\n);<\/code><\/p>\n<p><code>-- Uzupe\u0142nienie tabeli Zam\u00f3wienia<br \/>\nINSERT INTO Zamowienia (ID_Uzytkownika, Data_Zamowienia) VALUES<br \/>\n(1, '2021-01-01'),<br \/>\n(1, '2021-01-02'),<br \/>\n(2, '2021-01-03'),<br \/>\n(2, '2021-02-01'),<br \/>\n(3, '2021-02-02'),<br \/>\n(3, '2021-02-03'),<br \/>\n(3, '2021-03-01'),<br \/>\n(4, '2021-03-02'),<br \/>\n(4, '2021-03-03'),<br \/>\n(5, '2021-01-02'),<br \/>\n(6, '2021-01-03'),<br \/>\n(6, '2021-02-01'),<br \/>\n(6, '2021-02-02'),<br \/>\n(7, '2021-02-03'),<br \/>\n(7, '2021-03-01'),<br \/>\n(7, '2021-03-02'),<br \/>\n(7, '2021-03-03'),<br \/>\n(8, '2021-04-01'),<br \/>\n(8, '2021-03-10'),<br \/>\n(8, '2021-03-12'),<br \/>\n(9, '2021-03-15'),<br \/>\n(9, '2021-05-19'),<br \/>\n(9, '2021-03-09'),<br \/>\n(9, '2021-06-08'),<br \/>\n(10, '2021-07-07'),<br \/>\n(10, '2021-07-06'),<br \/>\n(10, '2021-08-05'),<br \/>\n(1, '2021-08-04');<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inner join w MySQL to rodzaj z\u0142\u0105czenia tabel, kt\u00f3ry pozwala na po\u0142\u0105czenie dw\u00f3ch tabel w taki spos\u00f3b, \u017ce w wynikowym zestawie danych znajduj\u0105 si\u0119 tylko te rekordy, kt\u00f3re maj\u0105 pasuj\u0105ce warto\u015bci w kolumnach po\u0142\u0105czonych za pomoc\u0105 operatora JOIN. Oto przyk\u0142ad [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":155,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[224,225,49],"class_list":["post-522","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bazy-danych","tag-bazy-danych","tag-mysq","tag-podstawy-sql"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/comments?post=522"}],"version-history":[{"count":0,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/522\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media\/155"}],"wp:attachment":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media?parent=522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}