PHP MySQL Inner Join nur dann, wenn nicht null
Ich habe eine mysqli SELECT Abfrage über einen Inner Join und ich bemerkte ein großes problem: Sie nicht wählen Sie die Zeilen, wo der Wert der Spalte für den Zustand null ist (da die NULL existiert nicht in der zweiten Tabelle). Hier ist mein code:
<?php
$sql = mysqli_connect(/* CONNECTION */);
$query = "SELECT " .
"e.EQUIPMENT_ID, " .
"e.CUSTOMER_ID, " .
"e.DESCRIPTION, " .
"e.LOCATION, " .
"e.JOB_SITE, " .
"e.PROJECT_NAME, " .
"jb.DESCRIPTION AS JOB_SITE_NAME " .
"FROM equipments e " .
"INNER JOIN jobsites jb ON jb.JOBSITE_ID = e.JOB_SITE " .
"WHERE e.CUSTOMER_ID = 1 ".
"ORDER BY e.EQUIPMENT_ID ASC";
$results = mysqli_query($sql, $query);
if(!isset($data)) $data = array(); $cc = 0;
while($info = mysqli_fetch_array($results, MYSQLI_ASSOC)){
if(!isset($data[$cc])) $data[$cc] = array();
/////FROM TABLE equipments /////
$data[$cc]['EQUIPMENT_ID'] = $info['EQUIPMENT_ID'];
$data[$cc]['DESCRIPTION'] = $info['DESCRIPTION'];
$data[$cc]['LOCATION'] = $info['LOCATION'];
$data[$cc]['PROJECT_NAME'] = $info['PROJECT_NAME'];
$data[$cc]['JOB_SITE_ID'] = $info['JOB_SITE'];
/////FROM TABLE jobsites /////
$data[$cc]['JOB_SITE'] = $info['JOB_SITE_NAME'];
$cc++;
}
print_r($data);
?>
So, wie ich sagte, der code gibt die Werte aber nur, wenn die Spalte "JOB_SITE" innen "Ausrüstungen" ist eine Baustelle-id (not null). Die unschöne Lösung ist, erstellen Sie eine Zeile innerhalb der Tabelle "jobsites" mit einem jobsite_id namens "leer", aber wenn ich überspringen kann, werde ich.
Gibt es eine Möglichkeit, erst beitreten, wenn e.JOB_SITE ist nicht null ?
- verwenden Sie left join, inner join wird 'skip' unvollständige Datensätze (wird nicht angezeigt, wenn die Verknüpfung ausgeführt werden kann nicht vollständig)
- Das ist es! Es funktioniert mit Left Join! Vielen, vielen Dank!!
- Sie sind willkommen, froh, dass ich helfen konnte
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
LEFT JOIN
in der SQL-Abfrage.Diese Abfrage
NULL VALUE
für SpalteJOB_SITE_NAME
wenn es keinerow
passendenjb.JOBSITE_ID
imequipments
Tabelle