Ответ 1
Я думал, что, не указывая тип соединения, предполагается, что это ЛЕВЫЙ ПРИСОЕДИНЕНИЕ. Это не так?
Нет, объединение по умолчанию - INNER JOIN.
Вот визуальное объяснение соединений SQL.
Внутреннее соединение
Левое соединение
У меня есть запрос на кросс-базу данных...
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
он работает нормально, пока я не сделаю их LEFT JOIN
s. Я думал, что, не указывая тип соединения, он считается LEFT JOIN
. Это не так?
Я думал, что, не указывая тип соединения, предполагается, что это ЛЕВЫЙ ПРИСОЕДИНЕНИЕ. Это не так?
Нет, объединение по умолчанию - INNER JOIN.
Вот визуальное объяснение соединений SQL.
Внутреннее соединение
Левое соединение
Нет. Если тип не указан, используется INNER JOIN
. Читать разницу; wikipedia
Я считаю, что значение по умолчанию INNER JOIN
, если вы просто указали JOIN
.
Если вы только что упомянули JOIN в запросе по умолчанию, это будет рассмотрено как INNER JOIN.
Левое соединение: левое соединение возьмет все элементы из левой таблицы и будет соответствовать только записи из правой таблицы, как указано далее. Пример:
SELECT column_name(s)
FROM table_name1 #(Left table)
LEFT JOIN table_name2 #(Right table)
ON table_name1.column_name=table_name2.column_name
Надеюсь, что это поможет.