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
표
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 개 항목으로 행을 나열) 각각 3
및 4
에 대해 하나의 행. (이전 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 희망적이라고 생각합니다! 페이지 변경, 새 목록 항목에 마우스를 가져 가면 표준 접근 방식