Это связано с earlier question I posted, но, к сожалению, я не думаю, что достаточно четко сформулировал свою проблему, так как не получил полного ответа на мой вопрос.Как группировать результаты SQL из связанных таблиц?
У меня есть две таблицы, одна из которых называется Groups и одна называется Items. То, что я хотел бы сделать, это выбрать все группы, а затем в каждой группе выбрать все элементы, так что я в конечном итоге с чем-то вроде этого:
Heading 1 < - Группа
- Один < - Item
- Два < - Item
Заголовок 2 < - Группа
- Один < - Item
- Два < - Item
В моем оригинальном посте вы можете увидеть код, я использовал для первоначально достижения этой цели, которая была по существу петля в петлю первого выбора всех групп, то все элементы внутри группы. Я знаю, имеющий цикл SQL запросов в цикле SQL запроса является плохой идеей, так что благодаря некоторым полезным С.О. членам теперь у меня есть этот код:
$query = "SELECT g.ID AS GRPID, g.Description AS GrpDesc,i.ID AS ITEM_ID, i.Description AS ItemDescription
FROM Groups_Inv g
LEFT JOIN Items_Inv i
ON g.ID=i.grpID
ORDER BY g.SortNum ASC";
try {
$result = odbc_exec($connect,$query);
if($result){
while ($groups = odbc_fetch_array($result)) {
echo "<li title='".$groups['GrpDesc']."' class='category'>
<h3><span><a class='category'>".$groups['GrpDesc']."</a></span></h3>
<ul class='sub-menu'>\n";
echo "<li class='select'>
<input type='radio' class='addRow'>
<label for='".$groups['ITEM_ID']."'>
".$groups['ItemDescription']."
</label>
</li>\n";
echo "</ul>
</li>\n";
}
}
else {
throw new RuntimeException("Failed to connect.");
}
}
Это выбирает все группы, которые имеют соответствующие элементы, но это не делает группа все элементы под их заголовком группы, так что я в конечном итоге с результатами, как это:
Heading 1
- Один
Заголовок 1
- Два
Как я могу изменить это так, чтобы все группы перечислены только один раз, и все элементы для каждой группы правильно перечислены под заголовком группы?
SQL-запрос кажется идеальным. попробуйте использовать SELECT * FROM ... и выберете определенные значения из массива ('field_name'). –
@RonakPatel Сам вопрос в порядке, я хочу знать, как мне группировать все результаты, чтобы каждый заголовок группы показывался только один раз, и все связанные элементы перечислены ниже? – Roy
ok .. для этого вам нужно использовать для цикла. $ групп [$ я] [ 'ItemDescription']. вам нужно использовать другой запрос для подсчета всех возможных элементов и привязать это значение к пределу цикла. –