Wpis z mikrobloga

Jak dobrze wytłumaczyć różnię pomiędzy złączeniem tabel za pomocą where a join / inner join - kiedy które stosować ?

ps. nie chodzi mi o left / right i outer joniy.

#sql #bazydanych #programowanie
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Warunków złączenia w where lepiej w ogóle nie stosować, bo jest to mniej czytelne przy większej ilości tabel.
  • Odpowiedz
@bi-tek: Bo w zależności od silnika w niektórych nie masz jawnie JOIN, tylko trzeba określić jak łączysz. Ogólnie JOIN oraz INNER JOIN to jest to samo. Wynikiem jest złączenie, które zawiera rekordy z lewej jak i z prawej strony.
  • Odpowiedz
@bi-tek: Po prostu widać warunek złączenia oddzielnie dla każdej kolejnej dołączanej tabeli, a nie wszystkie warunki zmieszane razem na końcu. Do tego standardowa i przenośna między różnymi bazami składnia outer joins jest wg tego samego schematu.
  • Odpowiedz
@bi-tek: Źle przeczytałem ( ͡° ͜ʖ ͡°) Ogólnie nie powinno się stosować złączenia poprzez WHERE ponieważ ta składnia jest przestarzała i nie należy jej stosować. Chodzi tobie o złączenie typu select * from a,b where a.id = b.id?
  • Odpowiedz
@Krukosz: Tak, wynik join i where bedzie taki sam i wyświetli wszystko co zgodne z takim zapisem i jest zgodne - zawsze stosowałem where ale przeglądając jakiś kurs gość pokazał że tak też się da i zacząłem szukać o co chodzi i jaka jest w tym róznica bo trochę zdziwiłęm się i ciekawiło mnie dlaczego zawsze wszędzie jest join i myślałem że jakaś jest różniac.
  • Odpowiedz
@bi-tek: Ja akurat składnie WHERE poznałem przy okazji jakiegoś kursu i to była adnotacja, że jest to stara składnia i nie warto jej stosować bo jest mniej czytelna i przestarzała.
  • Odpowiedz
@bi-tek: Dla przykładu w Oracle przy JOIN nie ma znaczenia czy warunek masz w WHERE czy JOIN. Duże znaczenie ma to natomiast dla czytelności kodu i w sytuacji kiedy masz LEFT JOIN.
Ja gdy piszę kod staram się np. każdy JOIN traktować jakby był LEFT JOIN i zadaję sobie pytanie czy jakby był LEFT JOIN to chce wyfiltrować cały wynik czy tylko nie chce dołączyć tej tabeli :)
  • Odpowiedz