Wpis z mikrobloga

#sql #programowanie #bazydanych ktos wytlumaczy na chlopski rozum jak dziala formuła INNER JOIN i do czego sie ona przydaje? xd
Rozumiem, ze chodzi o laczenie dwoch tabeli, ktore maja jakas wspolna kolumne. Ale jak to sie dzieje ze je laczymy i w ogole po jakiego grzyba to robic to juz gorzej ¯\_(ツ)_/¯

obecnie jestem w takim stanie, ze przysypiam po 30 sekundach ogladania fascynujacych wyjasnien na youtubie na ten temat xd
  • 14
@tehseriouscate wyobraz sobie ze masz tabelę krajów w excelu(zalozmy ze identyfikatorem kazdego kraju jest skrót nazwy np Polska=PL) i chcesz dołączyc do niej kolumny kolumnę z innej tabeli w ktorej jest liczba mieszkancow danego kraju. Ale zeby dolaczyc ta kolumne musisz wiedziec ktora liczba mieszkancow odpowiada ktoremu krajowi. Po to wlasnie jest identyfikator po ktorym laczysz odpowiadajace sobie rekordy. A dzieki slowu inner pokazuje ci tylko te rekordy ktore w obu tabelach
@tallman: calkiem przystepnie to zobrazowales. Czyli wyobrazmy sobie tabele Kraje oraz tabele Populacja. W obu tabelach mamy kolumne KodKraju (czyli np PL). Wiec jesli dobrze rozumiem, formuła INNER JOIN służy do zagregowania wspolnych rekordow obu tabeli, ktore to rekordy maja jedno wspolne kryterium - w tym przypadku bylby tym wspolnym mianownikiem KodKraju. Wiec jesli chcielibysmy wywalic wspolne rekordy tych dwoch tabeli, formuła wyglądałaby mniej wiecej:

SELECT * FROM Kraje INNER JOIN
@tallman: A z kolei gdybysmy chceili zawezic wynik, zeby bylo bardziej czytelnie, to zrobilibysmy cos w stylu?

SELECT Kraje.NazwaKraju, Populacja.LiczbaLudnosci FROM Kraje INNER JOIN Populacja ON Kraje.KodKraju=Populacja.KodKraju;

I wyszloby cos w stylu:

NazwaKraju - - - LiczbaLudnosci
Polska - - - 40mln
Francja - - - 60 mln
Niemcy - - - 60 mln

Zakladajac oczywiscie ze zarowno Polska, Francja, jak i Niemcy bylyby w obu tabelach i mialy przypisany w
@tehseriouscate: dokładnie tak. wchodząc głębiej to powinno to być zrobione tak, że KodKraju byłby kluczem głównym tabeli Kraje(nie mogłoby być dwóch rekordów z takim samym kodem kraju), i kluczem obcym w tabeli Populacja(mogloby być kilka rekordów z takim samym kodem kraju bo np. byłaby dodatkowa kolumna z rokiem i można by wtedy pokazać ile populacji miał dany kraj w danym roku). czyli z zapytania
SELECT Kraje.NazwaKraju, Populacja.LiczbaLudnosci, Populacja.Rok FROM Kraje INNER