Nie bardzo wiem o co chodzi w komendzie OUTER JOIN i czym się różni od zwykłego INNER JOIN. Podstawowe "słowniki" MySQL nie opisują OUTER JOIN a dokumnetacja ze strony mysql:
http://dev.mysql.com/doc/refman/5.0/en/join.html
niewiele mi mówi, jakieś zdawkowe informacje.
Może ktoś wyjaśnić o co tu chodzi?
Spotkałem sie też ze sformułowaniem że OUTER JOIN może być w stylu ANSI - też nie wiem o co chodzi.
MySQL - OUTER JOIN
- Rejestracja: dni
- Ostatnio: dni
- Postów: 150
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Inner join zwraca tylko wyniki w których udało sie dopasować lewą do prawej strony (w szczególności jeśli jakaś opcja po którejś ze stron nie występuje, to nie ma jej w wynikach)
outer join zwraca całą tabelę z jednej strony i to co się udało dopasować z drugiej strony (strona zalezy od tego czy to left outer join czy right outer join), w efekcie możesz mieć w wynikach coś w stylu:
ID | Value
1 | "ala ma kota"
2 | NULL
- Rejestracja: dni
- Ostatnio: dni
- Postów: 150
Aaaa ..
Czyli z tego co widzę LEFT OUTER JOIN to jest inaczej
LEFT JOIN ?
To sprawa jest prosta bo LEFT JOIN i RIGHT JOIN to znam. Myślałem tylko ze słówko OUTER definiuje zupełnie nową funkcję łączenia a tak naprawdę to to samo co bez tego słówka.
A co z tym ANSI? Spotkał się ktoś z tym?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3079
ANSI to skrót od American National Standards Institute. Zapytania ANSI to zapytania zgodne z jakimś konkretnym ustalonym standardem. Przykładowo w SQL ANSI-89 inner join wygląda tak:
SELECT * FROM a, b WHERE a.id = b.id;
a w SQL ANSI-92 inner join wygląda tak:
SELECT * FROM a INNER JOIN b ON a.id = b.id