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?
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
Left join
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
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
.
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.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