2013-07-22 2 views
0

두 개의 쿼리에서 패널 ID를 생성합니다. 하나의 쿼리는 제품과 관련된 패널 ID 만 생성합니다. 다른 쿼리는 사용 가능한 모든 패널 ID를 생성합니다.쿼리 결과가 다른 쿼리 결과의 값과 일치하면

확인란을 통해 모든 패널을 표시하려고하지만 관련 패널이 선택된 것으로 표시하려고합니다. 관련 패널을 $panel_id에 저장했습니다. 그러나 다음 코드는 관련 패널 중 하나만 검사하기 때문에 한 번만 반복되는 것으로 보입니다. 내가 뭘해야하는지 잘 모르겠다.

//related panels 
$panel_id = $row['panel_profile_id']; 


/all panels 
$result = mysqli_query($con,"SELECT * FROM panel_profile"); 

while($row = mysqli_fetch_array($result)) { 
    if($row['panel_profile_id'] == $panel_id) { 
     echo '<input type="checkbox" name="panel_profile[]" value="' . $row['panel_profile_id'] . '" checked="checked">' . $row['name'] . '<br />'; 
    } else { 
     echo '<input type="checkbox" name="panel_profile[]" value="' . $row['panel_profile_id'] . '">' . $row['name'] . '<br />'; 
    } 
} 

테이블 구조

테이블 : panel_table

panel_profile_id | name 
-----------------+----- 
1    | flat 

테이블 : relationship_table

wood_species_id | panel_profile_id 
----------------+----------------- 
1    | 1 
+0

당신은 당신이 개 테이블의 구조를 게시 할 수 있습니까? – Maximus2012

+0

여기에 표 스타일을 지정하는 방법이 확실하지 않습니다 – izharbuen

+0

테이블에 panel_profile_id 필드가 있습니까? – Maximus2012

답변

2

당신은 가입 왼쪽을 사용하여 데이터베이스가 당신을 위해 일을 할 수 확인할 panel_ids를 선택합니다.

SELECT panel_profile_id FROM relationship_table WHERE wood_species_id=4 

당신이 사용할 수있는 예를 들어

, 다음은 당신이 점검 할 패널 프로파일의 목록을 반환하는 경우

,

SELECT panel_profile.panel_profile_id, 
     (products.panel_profile_id IS NOT NULL) AS checked 
    FROM panel_profile LEFT JOIN relationship_table 
    ON panel_profile.panel_profile_id=products.panel_profile_id 
    WHERE wood_species_id=4 

이 쿼리는 두 열을 반환의 panel_profile_id와 검사 된 열은 검사해야 할 경우 1로, 그렇지 않으면 0으로 설정합니다.

0

당신은 제품에 해당하는 패널을 얻을 수있는 하위 쿼리를 사용하여 다음과 같은 검사로 다음 해당 패널을 표시 할 수 있습니다

SELECT *, panel_profile_id IN (SELECT panel_profile_id FROM relationship_table WHERE wood_species_id = 2) as checked 
FROM panel_table 

SQL Fiddle