Różnica w MySQL JOIN vs LEFT JOIN

Mam pytanie do bazy danych...

SELECT
            `DM_Server`.`Jobs`.*,
            `DM_Server`.servers.Description AS server,
            digital_inventory.params,
            products.products_id,
            products.products_pdfupload,
            customers.customers_firstname,
            customers.customers_lastname
        FROM `DM_Server`.`Jobs`
        INNER JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID
        JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name
        JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf")
        JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID
        ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50

Działa dobrze, dopóki nie zrobię z nich LEFT JOIN s. myślałem, że nie podając rodzaju połączenia przyjęto, że jest to LEFT JOIN. Czy tak nie jest?

Author: Brad Mace, 2012-03-19

4 answers

Myślałem, że nie podając typu join, zakładano, że jest to JOIN lewy. Czy tak nie jest?

Nie, domyślne połączenie to połączenie wewnętrzne.

Oto wizualne wyjaśnienie złączy SQL .

INNER join

Tutaj wpisz opis obrazka

Left join

Tutaj wpisz opis obrazka

 161
Author: Mark Byers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 12:53:05

Nie. Gdy Typ nie jest określony, używane jest INNER JOIN. Do poczytania o różnicach; wikipedia

 13
Author: rael_kid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 12:47:12

Domyślną wartością jest INNER JOIN, jeśli podasz JOIN.

 9
Author: Flash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 12:42:49

Jeśli właśnie wspomniałeś JOIN w zapytaniu domyślnie będzie to brane pod uwagę jako połączenie wewnętrzne.

Left join:Left join pobierze wszystkie elementy z lewej tabeli i tylko pasujące rekordy z prawej tabeli w następujący sposób. przykład:

SELECT column_name(s)
FROM table_name1 #(Left table)
LEFT JOIN table_name2 #(Right table)
ON table_name1.column_name=table_name2.column_name
Mam nadzieję, że to pomoże.
 8
Author: Java,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 14:07:21