Sobes.tech
Junior — Middle

Czym różnią się operacje CROSS JOIN i FULL OUTER JOIN w SQL, i w jakich przypadkach używa się każdej z nich?

sobes.tech AI

Odpowiedź od AI

CROSS JOIN i FULL OUTER JOIN to różne typy łączeń tabel w SQL o różnych celach:

  • CROSS JOIN to iloczyn kartezjański dwóch tabel. Każdy wiersz z pierwszej tabeli łączy się z każdym wierszem z drugiej. Używa się go, gdy trzeba uzyskać wszystkie możliwe kombinacje wierszy.

    Przykład:

    SELECT * FROM A CROSS JOIN B;
    

    Jeśli w A jest 3 wiersze, a w B 2, wynik będzie miał 6 wierszy.

  • FULL OUTER JOIN łączy wiersze z obu tabel, włączając wszystkie wiersze, nawet jeśli nie mają dopasowania w drugiej tabeli. Tam, gdzie nie ma dopasowania, pola z drugiej tabeli będą wypełnione NULL.

    Używa się go, gdy trzeba uzyskać wszystkie dane z obu tabel, zachowując informacje o niepasujących wierszach.

    Przykład:

    SELECT * FROM A FULL OUTER JOIN B ON A.id = B.id;
    

Kiedy używać:

  • CROSS JOIN — do generowania wszystkich możliwych par, np. przy tworzeniu harmonogramów lub kombinacji.
  • FULL OUTER JOIN — gdy trzeba połączyć dane z dwóch tabel i zachować wszystkie wpisy, nawet jeśli nie mają dopasowania.

W ten sposób, CROSS JOIN zwiększa liczbę wierszy, a FULL OUTER JOIN łączy dane, zachowując wszystkie wpisy.