Czy jest możliwe wpisanie zapytania join bez instrukcji ON
? i w jaki sposób te połączenia różnią się LEFT JOIN, RIGHT JOIN
działa.Jak używać mysql JOIN bez warunku WŁĄCZENIA?
Odpowiedz
MySQL documentation dotyczy tego tematu.
Oto streszczenie. Podczas korzystania z join
lub inner join
, warunek on
jest opcjonalny. Różni się od standardu ANSI i różni się od prawie każdej innej bazy danych. Efektem jest cross join
. Podobnie można użyć klauzuli on
z cross join
, która również różni się od standardowego SQL.
Łączenie krzyżowe tworzy produkt kartezjański - czyli każdą możliwą kombinację 1 wiersza z pierwszej tabeli i 1 wiersza z drugiej. Łączenie krzyżowe dla tabeli z trzema rzędami ("a", "b" i "c") oraz tabela z czterema wierszami (np. 1, 2, 3, 4) miałaby 12 wierszy.
W praktyce, jeśli chcesz zrobić krzyż dołączyć, a następnie użyć cross join
:
from A cross join B
jest znacznie lepsza niż:
from A, B
oraz:
from A join B -- with no on clause
on
w przypadku prawych lub lewych połączeń zewnętrznych wymagana jest klauzula, więc dyskusja nie jest istotna dla nich.
Jeśli chcesz zrozumieć różne rodzaje połączeń, musisz przeprowadzić pewne badania na relacyjnych bazach danych. Stackoverflow nie jest odpowiednim miejscem dla tego poziomu dyskusji.
zobaczyć jakiś przykład w http://www.sitepoint.com/understanding-sql-joins-mysql-database/
można wykorzystać „za pomocą” zamiast „ON” jak w zapytaniu
SELECT * FROM table1 LEFT JOIN table2 USING (id);
Aby uzyskać dodatkowe wyjaśnienie, kolumna łączenia w obu tabelach musi być identycznie nazwana dla USING do pracy – rmirabelle
kupili także zbadanie wykorzystania unijnego, który łączy wiele tabel dla jednego wyjścia: SQL - Combine two tables for one output
Jak to jest nawet istotne dla pytania OP? –
Ponieważ klauzula "ON" informuje serwer o tym, jak tabele są powiązane, nie. Jeśli twoje różne typy łączeń dają taki sam rezultat, to robisz to źle, a dodanie kodu może pomóc nam dostrzec twój problem. W międzyczasie udaj się na blog [Jeffa Atwooda] (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) na 2-minutowe wprowadzenie do różne rodzaje złączeń. – fvu