2012-02-18 5 views
2

question에 최대 다음과 같은 결과.MySQL의 : 다중 행 세트 기반의 접근 방식 VS 표준 접근 방식은 아래의 경우에 <strong>표준 접근 방식</strong> 또는 <strong>재귀 접근</strong>에 문제가,

는 예를 들어, 나는 같은 parent_id있는 페이지를 반환 할 일부 페이지는 여러 행 내용,

page 테이블

page_id page_title parent_id 
1   a   1 
2   aa   1 
3   ab   1 
4   ac   1 

content 테이블이

content_id content_text 
1   text one 
2   text two 
3   text one aa 
4   text two aa 
5   text one ab 
6   text one ac 

content structure

0 당신이 알 수 있듯이
page_id  content_id  order_in_page 
1   1    1 
1   2    2 
2   3    1 
2   4    2 
3   5    1 
4   6    1 

표준 접근 방식,

SELECT 
    p.*, 
    c.*, 
    x.* 

FROM pages AS p 

LEFT JOIN pages_structures AS x 
ON x.page_id = p.page_id 

LEFT JOIN pages_contents AS c 
ON c.content_id = x.content_id 

WHERE p.parent_id = '1' 
AND p.page_id != '1' 

결과는 두 행 page_id 2이 있다는 것을,

page_id page_title parent_id content_text order_in_page 
2   aa   1   text one aa  1  
2   aa   1   text two aa  2 
3   ab   1   text one ab  1 
4   ac   1   text one ac  1   

(은 4 개 항목으로 행을 나열) 각각 34에 대해 하나의 행. (이전 question에서 답 중 하나를 제안) 당신은 어떻게 다음과 같은 표준 접근 방식와 HTML로 데이터를 표시합니까?

echo $page[0]['page_title']; 
echo $page[0]['content_text']; 

그러나와

foreach($items as $item) 
{ 
    echo '<li><h3>'.$item['page_title'].'</h3>'; 
    echo '<p>'.$item['content_1'].'</p>'; 
    echo '<p>'.$item['content_2'].'</p></li>'; 
} 

되는 HTML (이 세 항목으로 행을 나열 PHP에서

SELECT 
    page_id, 
    page_title, 
    MAX(IF(order_in_page = 1, content_text, NULL)) AS content_1, 
    MAX(IF(order_in_page = 2, content_text, NULL)) AS content_2, 
    . 
    . 
    . 
FROM 
    pages AS p LEFT JOIN 
    pages_structures AS x ON x.page_id = p.page_id LEFT JOIN 
    pages_contents AS c ON c.content_id = x.content_id 
WHERE 
    p.parent_id = '1' 
AND 
    p.page_id != '1' 
GROUP BY page_id 

, 세트 기반 하나, 나는이 함께 할 수 , 이는) 올

<li> 
    <h3>aa</h3> 
    <p>text one aa</p> 
    <p>text two aa</p> 
</li> 

<li> 
    <h3>ab</h3> 
    <p>text one ab</p> 
    <p></p> 
</li> 

<li> 
    <h3>ac</h3> 
    <p>text one ac</p> 
    <p></p> 
</li> 
,536,913,632 10

희망적이라고 생각합니다! 페이지 변경, 새 목록 항목에 마우스를 가져 가면 표준 접근 방식

답변

0

은 그냥 변수에 현재 페이지를 추적합니다.