SELECT * FROM menu M, content C LEFT JOIN content_menu CxM ON M.`id`=CxM.`id_menu`
C.`id`=CxM.`id_content` WHERE M.`active`='1'
을 알고 있다면 내가
$exQuery = "SELECT * FROM menu M, content C LEFT JOIN content_menu CxM ON M.`id`=CxM.`id_menu` C.`id`=CxM.`id_content` WHERE M.`active`='1'";
$query = mysql_query($exQuery);
while($result = mysql_fetch_object($query)){
$str.='<div class="additional-navigation-wrapper">';
$str.= '<div class="additional-navigation">';
$str.= '<a class="border-bottom-white padding-level-one inactive additional-nav-info" href="javascript:void(0);">';
$str.= $result->title;
$str.= '<img class="nav-arrow no-action floatright" src="images/nav-arrow-white.png" />';
$str.= '<span class="clearboth"></span>';
$str.= '</a>';
$str.= '<div class="additional-nav-info-wrapper">';
$str.= '<div class="additional-nav-info-inner" style="display:none;">';
$str.= '<h2>'.$result->title.'</h2>';
$str.= '<p>'.$page->content.'</p>';
$str.= '</div>';
$str.= '</div>';
$str.= '</div>';
$str.='</div>';
$i++;
}
return $str;
을 사용하고 코드입니다 @ user3591614에서 언급 한 두 조인 용어 사이에 콤마 스타일 조인 구문과 JOIN
구문을 섞으면 문제가 발생합니다.
JOIN
은 쉼표보다 우선 순위가 높습니다. 따라서 검색어가 M.id = CxM.id_menu
이라는 용어를 평가할 때 테이블 C
및 CxM
에 대해서만 알고 있습니다. 따라서 테이블 M
은 조인 조건으로 참조 할 수 없습니다.
해결 방법은 쉼표 스타일의 조인을 사용하지 않고 일관된 조인을 위해 현대 구문을 사용하는 것입니다. 그 쿼리를 작성하는 방법은 다음과 같습니다.
SELECT * FROM menu M
LEFT JOIN content CxM ON M.id = CxM.id_menu
LEFT JOIN content C ON C.id = CxM.id_content
WHERE M.active=1
PHP stuff arround없이 조인 할 수 있습니까? – frlan
암시 적 (쉼표) 및 명시 적 JOIN 구문을 함께 사용하지 마십시오. 사실, 쉼표 조인 구문을 사용하지 마십시오. – Strawberry