2014-04-16 3 views
2

내부 조인을 사용하는 mysqli SELECT 쿼리가 있는데 커다란 문제를 발견했습니다. 조건에 대한 열 값이 NULL 인 행을 선택하지 않습니다 두 번째 표에 존재하지 않음).PHP MySQL - 내부 조인 (null이 아닐 경우에만)

<?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); 

?> 

그래서 내가 말했듯이, 코드 값을 반환하지만 열 "JOB_SITE"내부 "장비"는 현장 ID를 가지고있는 경우에만 (null이 아닌) : 여기에 내 코드입니다. 추한 해결책은 "empty"라는 jobsite_id를 사용하여 "jobsites"테이블에 행을 만드는 것입니다. 그러나이 작업을 건너 뛸 수 있다면 그렇게 할 것입니다.

e.JOB_SITE가 null이 아닌 경우에만 참여할 수 있습니까?

+3

사용이 가입 왼쪽 equipments 테이블에 jb.JOBSITE_ID 일치하지있을 경우

$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 " . "LEFT JOIN jobsites jb ON jb.JOBSITE_ID = e.JOB_SITE " . "WHERE e.CUSTOMER_ID = 1 ". "ORDER BY e.EQUIPMENT_ID ASC"; 

이 쿼리는 열 JOB_SITE_NAME에 대한 NULL VALUE를 반환합니다 (표시되지 않습니다 완료) – Eric

+0

그게 전부 야! 왼쪽 결합! 정말 고맙습니다!! – pmrotule

+0

도움을 청할 수있어서 다행입니다. – Eric

답변

5

LEFT JOIN을 SQL 쿼리에 사용할 수 있습니다. 수 없습니다에 가입하는 경우에는 row은 내부 불완전한 기록을 '건너 뛰기'것이다 가입,

+0

에릭은 대답하기 바로 전에 의견을 말하고, 왼쪽 조인을 사용하라고 말했습니다. 고마워요! – pmrotule