2012-05-01 5 views
0

у меня есть 2 таблицы:Как сделать (набор записей категорий и подкатегории)

categories (id, categoryName), menu (id, menuname, category_id)

Я хотел бы, чтобы отобразить все категории, которые имеют одну или несколько записей в menu. И после каждого categoryName, чтобы показать 5 menuname.

Возможно ли это сделать в одном наборе записей?

Спасибо!

Это мои 2: наборы записей

$query = "select a.id, a.name from categories as a where a.id in (select count(*) from menu as b on b.category_id = a.id)"; 
$result = mysql_query($query); 
while ($row = mysql_fetch_array($result)) { 
    echo $row['name']; 
    $category_id = intval($row['id']); 
    $query = "select menuname from menu where category_id = $category_id limit 0, 5"; 
    $resultmenu = mysql_query($query); 
    while ($rowmenu = mysql_fetch_array($resultmenu)) { 
     echo $rowmenu['menuname']; 
    } 
} 
+0

Что вы подразумеваете под "* И после каждой категорииName, чтобы показать 5 menuname. *"? – mattytommo

+0

Эти два вопроса? –

ответ

0

Как уже упоминалось выше, я не уверен, что подразумевается под «И после каждого CategoryName, чтобы показать 5 название_меню».

Но чтобы показать список всех имен категории/меню в алфавитном порядке можно использовать следующее:

Update:

В данный момент ваш первый запрос будет возвращать только в лучший один ряд. Подзапрос в настоящее время подсчитывает количество строк menu, а затем этот рисунок используется для вытягивания строки из таблицы категорий, которая не является тем, что вы хотите.

Следующий запрос присоединяется на menu стол, чтобы убедиться, что по крайней мере один элемент существует, а затем группы по category полей, чтобы гарантировать, что каждый элемент возвращается только один раз:

$query = "select a.id, a.name from categories as a inner join menu as b on b.category_id = a.id group by a.id, a.name" 

Update 2

Ах, извините, теперь я понимаю. Нет, я не думаю, что можно добиться того, чего вы хотите в одном запросе. Даже если бы это было возможно, я бы не рекомендовал его. Посмотрев на свой код, вы хотите распечатать только categoryName для каждого набора пунктов меню. Если бы вы были в состоянии отступить categoryName и menuname детали в одном наборе результатов, как так:

| categoryName | menuname | 
--------------------------- 
| category1 | menu1 | 
| category1 | menu2 | 
| category1 | menu3 | 
| category2 | menu4 | 

При переборе результатов вы должны вручную проверить, когда categoryName изменилось, чтобы распечатать его один раз этот набор menuname элементов.

+3

Я думаю, что OP означало, что для каждой 'категории' должно быть не более 5' menu'. – eggyal

+0

Спасибо! Но я имел в виду другого. Я редактировал свой вопрос. –

+1

См. Мое обновление. – weenoid

Смежные вопросы