Unterscheidung zwischen MySQL JOIN und LEFT JOIN
Im Kontext von Datenbankabfragen ist das Verständnis der Nuancen zwischen verschiedenen Join-Typen von entscheidender Bedeutung. Wenn Sie auf Fehler wie den beschriebenen stoßen, ist es wichtig, sich mit den Unterschieden zwischen einem regulären JOIN und einem LEFT JOIN zu befassen.
Standard-Join-Typ
Entgegen Ihrer Annahme Der Standard-Join-Typ in MySQL ist INNER JOIN, nicht LEFT JOIN. Das heißt, wenn Sie die Angabe eines Join-Typs weglassen, wird standardmäßig INNER JOIN verwendet.
Den Unterschied verstehen
Ein INNER JOIN, wie in der visuellen Abbildung dargestellt, stimmt überein Zeilen mit gemeinsamen Werten aus den teilnehmenden Tabellen. Im Gegensatz dazu umfasst ein LEFT JOIN alle Zeilen aus der linken Tabelle (in Ihrem Fall DM_Server.Jobs) und nur die passenden Zeilen aus der rechten Tabelle. Wenn es keine Übereinstimmungen gibt, enthält das Ergebnis Nullwerte für die fehlenden Daten.
Lösung
Um das gewünschte Verhalten der Rückgabe aller Zeilen aus der linken Tabelle zu erhalten, müssen Sie kann explizit einen LEFT JOIN verwenden:
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") LEFT JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50
Das obige ist der detaillierte Inhalt vonWarum liefert meine MySQL-Abfrage weniger Ergebnisse als erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!