Comprendre la différence entre JOIN et LEFT JOIN dans MySQL
En SQL, la jointure de tables nous permet de combiner les données de plusieurs tables en fonction de paramètres spécifiques critères. Deux types courants de jointures sont JOIN et LEFT JOIN.
JOIN vs LEFT JOIN
JOIN renvoie uniquement les lignes qui correspondent à la condition de jointure, créant essentiellement un sous-ensemble d'enregistrements. qui répondent aux critères spécifiés. D'un autre côté, LEFT JOIN récupère toutes les lignes de la table de gauche et uniquement les lignes qui ont une correspondance dans la table de droite. Les lignes sans correspondance dans le tableau de droite sont renvoyées avec des valeurs NULL.
Type de jointure par défaut dans MySQL
Contrairement à l'hypothèse de l'utilisateur, le type de jointure par défaut dans MySQL est INNER JOIN, ce qui signifie qu'il inclut uniquement les lignes qui satisfont à la condition de jointure. Si vous souhaitez utiliser un LEFT JOIN, vous devez le spécifier explicitement dans votre requête.
Exemple
Considérez l'exemple suivant fourni par l'utilisateur :
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
Par défaut, cette requête utilise les INNER JOIN, qui renvoient uniquement les tâches ayant des entrées correspondantes dans les quatre tables jointes. Pour le convertir en LEFT JOIN, vous devez modifier les mots-clés JOIN en LEFT JOIN, comme suit :
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` LEFT JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID LEFT JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name LEFT JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf") LIMIT 50
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!