2012-04-01 2 views
0

У меня есть две таблицы, одна содержат страницы/заголовок номер и текст заголовка, другие содержат значение для печати под каждый заголовок:Группировать результаты по заголовкам из другой таблицы

Рубрика:

page | heading | text 
1 | 1  | "heading 1" 
1 | 2  | "heading 2" 

Содержание:

page | heading | contents 
1 | 1  | "some stuff" 
1 | 1  | "some more stuff" 
1 | 2  | "some other stuff" 

Я хочу, чтобы результаты для страницы 1 будет:

heading 1 
some stuff 
some more stuff 
heading 2 
some other stuff 

Добавлен HTML-код, если необходимо.

Использование двух циклов while с mysql_fetch_array() не работает, потому что вы должны выбрать, прежде чем сможете проверить, находится ли он под правильным заголовком. Это означает, что я пропускаю первую запись каждого следующего заголовка.

$query = "SELECT text,heading FROM headings WHERE page=".$page." ORDER BY heading ASC"; 
$headings = mysql_query($query) or die(mysql_error()); 
$query = "SELECT filename,heading FROM pictures WHERE page=".$page." ORDER BY heading ASC"; 
$pictures = mysql_query($query) or die(mysql_error()); 

while($heading = mysql_fetch_array($headings)){ 
echo $heading[0]; 
    while($image = mysql_fetch_array($pictures)){ # This skips entries because I have to check the contents themselves 
     if($image[1] != $heading[1]){ 
      break; 
     } 
     echo $image[0]; 
    } 
} 

Есть ли способ сделать это без запуска нескольких запросов для каждого заголовка? (Может быть много на странице)

+0

почему вы отделили заголовок из его содержания, кажется противоречащим интуитивным, означает, что ваш есть TODO на по крайней мере, соединение для каждого запроса для каждого фрагмента контента. –

+0

Поскольку для заголовка имеется несколько материалов, мне нужна отдельная таблица для заголовков. –

ответ

1

Просто выведите все результаты в 2 массива перед повторением с помощью петель.

+0

Что-то вроде 'while ($ images [] = mysql_fetch_array ($ pictures)) {}'? Спасибо, что работал как шарм –

1

Что вы ищете - это запрос с JOIN.

я предположил, что базы данных выглядит следующим образом: Fiddle

Включается запрос вы можете искать