J'ai cette requête inter-base de données ...
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
ça fonctionne bien jusqu'à ce que je les fasse LEFT JOIN
s. Je pensais qu'en ne spécifiant pas un type de jointure, on supposait qu'il s'agissait d'un LEFT JOIN
. Ce n'est pas le cas?
Je pensais qu'en ne spécifiant pas un type de jointure, il était supposé être un LEFT JOIN. Ce n'est pas le cas?
Non, la jointure par défaut est INNER JOIN.
Voici ne explication visuelle des jointures SQL .
Jointure interne
Rejoindre à gauche
Non. Lorsqu'un type n'est pas spécifié, un INNER JOIN
est utilisé. Lire sur les différences; wikipedia
Je crois que le défaut est INNER JOIN
_ si vous spécifiez simplement JOIN
.
Si vous venez de mentionner JOIN dans requête par défaut, cela sera considéré comme INNER JOIN.
Jointure à gauche: La jointure à gauche prend tous les éléments de la table de gauche et uniquement les enregistrements correspondants de la table de droite comme suit. Exemple:
SELECT column_name(s)
FROM table_name1 #(Left table)
LEFT JOIN table_name2 #(Right table)
ON table_name1.column_name=table_name2.column_name
J'espère que cela t'aides.