2012-10-16 4 views
0

두 개의 테이블이 있습니다 (claim_pics & claiminfo) 결과 페이지에 대한 쿼리를 수행하고 있습니다.왼쪽 결합 만 반환하는 경우 일치하는 경우

잘 작동합니다. 거기에 두 개의 테이블 claim_id (claiminfo.claim_id = claim_pics.claim_id)의 일치가 있습니다.

그러나 claim_id가있는 테이블이 하나, 즉 claiminfo에 있고 일치하는 claim_id가 아닌 경우 행의 모든 ​​속성이 claim_id를 제외하고 표시됩니다.

claim_id가 없으므로 사용자가 수정 버튼을 클릭하면 어디로 갈지를 지정하는 claim_id가 없습니다.

일치 여부와 상관없이 claim_id의 $ 결과를 제시해야합니다. 어떤 아이디어 또는 해결 방법?

감사합니다.

$query = "SELECT * FROM claiminfo 
          LEFT JOIN (claim_pics) 
          ON (claiminfo.claim_id = claim_pics.claim_id) 
      WHERE(userid='$userid') 
      ORDER BY claiminfo.ts 
      DESC LIMIT 200"; 

// 단지 사진과 정보가 일치 모두

의견이 지적했듯이
    $result = mysql_query($query); 

        while($row = mysql_fetch_assoc($result)) { 


            $namelocation =  $row['namelocation']; 
            $claimholder = $row['claimholder']; 
            $occasion =  $row['occasion']; 
            $geotag = $row['geotag']; 
            $lat = $row['lat'] ; 
            $lng = $row['lng']; 
            $claim_id = $row['claim_id']; 
            $img = $row['location']; 




            $html = " ... " 
+3

명심하십시오. 적절한 대소 문자를 사용하면 텍스트를 더 쉽게 읽을 수 있고 Shift 키를 누르면 성가 시게되므로 Shift 키가 있습니다. –

+1

*이 claiminfo 테이블 대신 claim_pics 테이블의 clam_id를 선택하기 때문에 이것이라고 생각합니다. –

+0

내 한계는 limitin 절이 단지'claiminfo.claim_id = claim_pics.claim_id' 인 것처럼 보인다는 것입니다. 모든 행을 반환하고 오른쪽에 NULL이 있는지 확인하십시오. –

답변

0

, 빈 claim_pics 행에서 널 claim_id는 블랭킹되는 것입니다

claim_ids를 반환합니다 $row['claim_id']. 이 문제를 해결 얻을 수있는 가장 쉬운 방법은 명시 적으로 선택하는 것입니다 별명 claiminfo.claim_id :

$query = "SELECT *, claiminfo.claim_id AS id FROM claiminfo 
          LEFT JOIN (claim_pics) 
          ON (claiminfo.claim_id = claim_pics.claim_id) 
      WHERE(userid='$userid') 
      ORDER BY claiminfo.ts 
      DESC LIMIT 200"; 

그런 다음 안정적으로 변수 $row['id']와 claim_id를 얻을 수 있습니다.

이 상황은 일반적으로 더 나은 이유를 보여줍니다. not to use SELECT *.

+0

시도했지만 반환하지 않았습니다. 아무것도. 쉼표를 의미하는 다중 선택 구문이 올바른가요? –

+0

행을 지정할 때 별표를 먼저 입력해야합니다. 내 대답이 수정되었습니다. –

+0

해결되었습니다. 고맙습니다! –

관련 문제